《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第3章 PHP函數(shù)與數(shù)組_第1頁
《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第3章 PHP函數(shù)與數(shù)組_第2頁
《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第3章 PHP函數(shù)與數(shù)組_第3頁
《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第3章 PHP函數(shù)與數(shù)組_第4頁
《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》 課件-第3章 PHP函數(shù)與數(shù)組_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第3章PHP函數(shù)與數(shù)組《PHP+MySQL動態(tài)網(wǎng)站開發(fā)》學(xué)習(xí)目標(biāo)/Target熟悉函數(shù)的定義和使用方法熟悉PHP內(nèi)置字符串函數(shù)和數(shù)學(xué)函數(shù)的使用方法掌握數(shù)組的定義和使用方法掌握常用數(shù)組函數(shù)的用法掌握文件包含語句和替代語句的使用方法章節(jié)概述/Summary函數(shù)就是將一些需要多次使用的代碼封裝起來,在用到的時候進行調(diào)用,從而避免相同功能代碼的重復(fù)編寫。這樣的方式不僅減少了工作量,也有利于代碼的維護。數(shù)組用于對一批數(shù)據(jù)進行批量處理,利用常用的數(shù)組函數(shù)可實現(xiàn)數(shù)組遍歷、數(shù)組排序、數(shù)組檢索等操作。本章將對函數(shù)和數(shù)組的相關(guān)知識進行詳細講解。目錄/Contents01020304函數(shù)數(shù)組常用數(shù)組函數(shù)文件包含語句05替代語法函數(shù)3.13.1.1自定義函數(shù)

先定一個小目標(biāo)!掌握自定義函數(shù)的語法,能夠?qū)⒅貜?fù)使用的代碼封裝成函數(shù)3.1.1自定義函數(shù)自定義函數(shù):由關(guān)鍵字function、函數(shù)名、參數(shù)、函數(shù)體4部分組成。function:聲明函數(shù)的關(guān)鍵字。函數(shù)名:命名規(guī)則與標(biāo)識符相同,且函數(shù)名是唯一的,不能重復(fù)。參數(shù):外界傳遞給函數(shù)的值,是可選的,有多個參數(shù)時使用英文逗號“,”分隔。函數(shù)體:專門用于實現(xiàn)特定功能的代碼。3.1.1自定義函數(shù)自定義函數(shù):function函數(shù)名([參數(shù)1,參數(shù)2,…]){

函數(shù)體}語法格式3.1.1自定義函數(shù)調(diào)用自定義函數(shù):只需引用函數(shù)名,并傳入相應(yīng)的參數(shù)即可。函數(shù)名([參數(shù)1,參數(shù)2,…])語法格式3.1.1自定義函數(shù)自定義函數(shù)的返回值:使用return關(guān)鍵字將函數(shù)的返回值傳遞給調(diào)用者。//定義sum()函數(shù)求兩個數(shù)的和functionsum($a,$b){ $result=$a+$b;

return$result; //返回處理結(jié)果}echosum(23,45); //輸出調(diào)用函數(shù)后的結(jié)果案例:自定義函數(shù)求兩個數(shù)的和3.1.2設(shè)置參數(shù)默認(rèn)值

先定一個小目標(biāo)!熟悉如何設(shè)置參數(shù)的默認(rèn)值,能夠?qū)崿F(xiàn)函數(shù)可選傳參3.1.2設(shè)置參數(shù)默認(rèn)值設(shè)置參數(shù)默認(rèn)值:設(shè)置函數(shù)參數(shù)時,可以指定默認(rèn)值,設(shè)置默認(rèn)值后該參數(shù)也稱為可選參數(shù)。functionsay($p,$con='say"Hello"'){ return"$p$con";}echosay('Tom'); //輸出結(jié)果:Tomsay"Hello"注意:在設(shè)置參數(shù)默認(rèn)值時,可選參數(shù)必須放在必選參數(shù)的右側(cè)。代碼示例3.1.2設(shè)置參數(shù)默認(rèn)值多學(xué)一招:引用傳參引用傳參:在參數(shù)前添加“&”符號,通過函數(shù)參數(shù)的引用傳遞修改參數(shù)值。functionextra(&$str){ $str.='andsomeextra';}$var='food';extra($var);echo$var; //輸出結(jié)果:foodandsomeextra代碼示例3.1.3變量的作用域

先定一個小目標(biāo)!熟悉變量的作用域,能夠說出局部變量和全局變量的區(qū)別3.1.3變量的作用域變量的作用域:只有在其作用范圍內(nèi)才可以被使用。在函數(shù)中定義的變量稱為局部變量,在函數(shù)外定義的變量稱為全局變量。functiontest(){ $sum=36; //局部變量 return$sum;}$sum=0; //全局變量echotest(); //輸出結(jié)果:36echo$sum; //輸出結(jié)果:0代碼示例3.1.3變量的作用域多學(xué)一招:靜態(tài)變量靜態(tài)變量:使用static關(guān)鍵字在函數(shù)中聲明,函數(shù)執(zhí)行完成后保留局部變量的值。functionnum(){

static$i=1; echo$i; ++$i;}代碼示例3.1.4可變函數(shù)

先定一個小目標(biāo)!熟悉可變函數(shù)的使用,能夠通過可變函數(shù)的方式調(diào)用函數(shù)3.1.4可變函數(shù)可變函數(shù):在變量名后添加一對圓括號“()”變成函數(shù)形式,執(zhí)行與變量值同名的函數(shù)。functionshout(){ echo'comeon....';}$funcname='shout'; //定義變量,其值是函數(shù)的名稱echo$funcname(); //利用可變變量調(diào)用函數(shù)可變函數(shù)代碼示例3.1.5匿名函數(shù)

先定一個小目標(biāo)!掌握匿名函數(shù)的使用,能夠定義和調(diào)用匿名函數(shù)3.1.5匿名函數(shù)匿名函數(shù):沒有函數(shù)名稱的函數(shù),也稱作閉包函數(shù),經(jīng)常用作回調(diào)函數(shù)參數(shù)的值。$sum=function($a,$b){ //定義匿名函數(shù) return$a+$b;};echo$sum(100,200); //輸出結(jié)果:300匿名函數(shù)代碼示例3.1.5匿名函數(shù)在匿名函數(shù)中使用外部的變量:通過use關(guān)鍵字實現(xiàn)。$c=100;$sum=function($a,$b)use($c){ return$a+$b+$c;};echo$sum(100,200); //輸出結(jié)果:400匿名函數(shù)中使用外部變量代碼示例3.1.5匿名函數(shù)匿名函數(shù)實現(xiàn)回調(diào)函數(shù):將匿名函數(shù)作為函數(shù)的參數(shù)傳遞。functioncalculate($a,$b,$func){ return$func($a,$b);}echocalculate(100,200,function($a,$b){ //輸出結(jié)果:300 return$a+$b;});echocalculate(100,200,function($a,$b){ //輸出結(jié)果:20000 return$a*$b;});匿名函數(shù)實現(xiàn)回調(diào)函數(shù)代碼示例3.1.6字符串函數(shù)

先定一個小目標(biāo)!掌握字符串函數(shù)的使用,能夠?qū)ψ址M行長度獲取、查找內(nèi)容、截取子串、字符替換等操作3.1.6字符串函數(shù)函數(shù)名稱功能描述strlen()獲取字符串的長度strpos()在指定字符串中查找目標(biāo)字符串首次出現(xiàn)的位置strrpos()獲取指定字符串在目標(biāo)字符串中最后一次出現(xiàn)的位置str_replace()用于對字符串中的某些字符進行替換操作substr()用于獲取字符串中的子串explode()將指定字符串拆分成數(shù)組implode()用指定的分隔符將數(shù)組中的鍵值拼接成字符串trim()去除字符串首尾處的空白字符(或指定的字符串)str_repeat()重復(fù)字符串strcmp()比較兩個字符串的大小字符串函數(shù):是PHP的內(nèi)置函數(shù),用于操作字符串。3.1.6字符串函數(shù)echostrlen('abc'); //輸出結(jié)果:3echostrrpos('itcast','a'); //輸出結(jié)果:3echosubstr('welcome',3); //輸出結(jié)果:comeechostr_replace('e','E','welcome',$count);//輸出結(jié)果:wElcomEecho$count; //輸出結(jié)果:2案例:字符串函數(shù)使用示例3.1.7數(shù)學(xué)函數(shù)

先定一個小目標(biāo)!掌握數(shù)學(xué)函數(shù)的使用,能夠?qū)?shù)字進行向上取整、向下取整、求隨機數(shù)等操作3.1.7數(shù)學(xué)函數(shù)函數(shù)名功能描述函數(shù)名功能描述abs()絕對值min()返回最小值ceil()向上取最接近的整數(shù)pi()返回圓周率的值floor()向下取最接近的整數(shù)pow()返回x的y次方fmod()返回除法的浮點數(shù)余數(shù)sqrt()返回一個數(shù)的平方根is_nan()判斷是否為合法數(shù)值round()對浮點數(shù)進行四舍五入max()返回最大值rand()返回隨機整數(shù)數(shù)學(xué)函數(shù):PHP的內(nèi)置函數(shù),方便處理程序中的數(shù)學(xué)運算。3.1.7數(shù)學(xué)函數(shù)echoceil(5.2); //輸出結(jié)果:6echofloor(7.8); //輸出結(jié)果:7echorand(1,20); //隨機輸出1到20間的整數(shù)案例:數(shù)學(xué)函數(shù)使用示例3.1.8時間和日期函數(shù)

先定一個小目標(biāo)!掌握時間和日期函數(shù)的使用,能夠?qū)崿F(xiàn)時間戳獲取、時間格式化、毫秒時間獲取等操作3.1.8時間和日期函數(shù)函數(shù)名功能描述time()獲取當(dāng)前的UNIX時間戳date()格式化一個本地時間/日期mktime()獲取指定日期的UNIX時間戳strtotime()將字符串轉(zhuǎn)化成UNIX時間戳microtime()獲取當(dāng)前UNIX時間戳和微秒數(shù)時間和日期函數(shù):PHP的內(nèi)置函數(shù),用于處理日期和時間。3.1.8時間和日期函數(shù)echotime(); //輸出結(jié)果:1582793102echodate('Y-m-d'); //輸出結(jié)果:2020-02-27echomicrotime(); //輸出結(jié)果:0.464484001582793102echomicrotime(true);//輸出結(jié)果:1582793102.4645案例:時間和日期函數(shù)使用示例3.1.9【案例】獲取文件擴展名

先定一個小目標(biāo)!掌握獲取文件擴展名案例,能夠?qū)崿F(xiàn)根據(jù)一個文件路徑字符串獲取文件的擴展名3.1.9【案例】獲取文件擴展名需求分析在開發(fā)文件上傳功能時,經(jīng)常需要判斷用戶上傳文件的類型,看其是否符合要求。例如,網(wǎng)站只允許用戶上傳JPG格式的商品圖片,需要使用PHP來獲取上傳文件的擴展名。通過自定義函數(shù)和字符串函數(shù)實現(xiàn)獲取文件擴展名的功能。substr($path,strrpos($path,'.')+1)數(shù)組3.23.2.1初識數(shù)組

先定一個小目標(biāo)!熟悉數(shù)組的基本概念,能夠說出數(shù)組的組成,能夠說出關(guān)聯(lián)數(shù)組和索引數(shù)組的區(qū)別3.2.1初識數(shù)組數(shù)組:存儲一組數(shù)據(jù)的集合,數(shù)組中的數(shù)據(jù)稱為數(shù)組元素,數(shù)組元素由“鍵=>值”表示,多個元素使用“,”分隔。鍵:數(shù)組元素的識別名稱,也稱數(shù)組下標(biāo),鍵是整型的數(shù)組稱為索引數(shù)組,鍵是字符串型的數(shù)組稱為關(guān)聯(lián)數(shù)組。值:數(shù)組元素的內(nèi)容。$arr1=[0=>'張三',1=>29]; //索引數(shù)組$arr2=['name'=>'張三','age'=>29]; //關(guān)聯(lián)數(shù)組索引數(shù)據(jù)和關(guān)聯(lián)數(shù)組代碼示例3.2.2數(shù)組的使用

先定一個小目標(biāo)!掌握數(shù)組的使用方法,能夠?qū)崿F(xiàn)數(shù)組的定義和數(shù)組元素的新增、訪問、刪除、判斷等操作3.2.2數(shù)組的使用定義數(shù)組的兩種方式:array()語言結(jié)構(gòu)、短數(shù)組定義法。//使用array()定義數(shù)組$info=array('id'=>1,'name'=>'Tom');$fruit=array(1=>'apple',3=>'pear');//使用短數(shù)組定義數(shù)組$info=['id'=>1,'name'=>'Tom'];$num=[1,4,7,9];定義數(shù)組定義數(shù)組代碼示例新增數(shù)組元素:創(chuàng)建一個數(shù)組變量,使用賦值運算符直接給變量賦值。3.2.2數(shù)組的使用$arr[]='PHP'; //存儲結(jié)果:$arr[0]='PHP'$arr[]='Java'; //存儲結(jié)果:$arr[1]='Java'$arr[3]='C語言'; //存儲結(jié)果:$arr[3]='C語言'$arr[5]='C++'; //存儲結(jié)果:$arr[5]='C++'$arr['sub']='iOS'; //存儲結(jié)果:$arr['sub']='iOS'$arr[]='網(wǎng)頁平面'; //存儲結(jié)果:$arr[6]='網(wǎng)頁平面'新增數(shù)組元素新增數(shù)組代碼示例3.2.2數(shù)組的使用$info=['id'=>1,'name'=>'Tom'];//輸出結(jié)果:Tomecho$info['name']; //輸出結(jié)果:Array([id]=>1[name]=>Tom)print_r($info);//輸出結(jié)果:array(2){["id"]=>int(1)["name"]=>string(3)"Tom"}var_dump($info);訪問數(shù)組:通過數(shù)組的鍵來訪問數(shù)組元素。訪問數(shù)組訪問數(shù)組代碼示例3.2.2數(shù)組的使用$fruit=['apple','pear'];unset($fruit[1]);print_r($fruit); //輸出結(jié)果:Array([0]=>apple)unset($fruit);print_r($fruit); //輸出結(jié)果:Notice:Undefinedvariable:fruit...刪除數(shù)組:使用unset語言結(jié)構(gòu)可以刪除數(shù)組中的某個元素,也可以刪除整個數(shù)組。刪除數(shù)組刪除數(shù)組代碼示例3.2.2數(shù)組的使用$fruit=['apple','pear'];unset($fruit[1]);var_dump(isset($fruit[1])); //輸出結(jié)果:bool(false)判斷數(shù)組元素是否存在:使用isset()語言結(jié)構(gòu)判斷數(shù)組中的元素是否存在,返回結(jié)果為布爾值。判斷數(shù)組元素是否存在判斷數(shù)組元素代碼示例3.2.3數(shù)組遍歷

先定一個小目標(biāo)!掌握數(shù)組的遍歷,能夠編寫程序依次訪問數(shù)組中的每一個元素3.2.3數(shù)組遍歷數(shù)組遍歷:依次訪問數(shù)組中的每個元素,通常使用foreach語句。$fruit=['apple','pear'];foreach($fruitas$key=>$value){ echo$key.'-'.$value.''; //輸出結(jié)果:0-apple1-pear}數(shù)組遍歷代碼示例3.2.4數(shù)組和字符串的轉(zhuǎn)換

先定一個小目標(biāo)!掌握數(shù)組和字符串的轉(zhuǎn)換,能夠?qū)崿F(xiàn)數(shù)組和字符串之間的互相轉(zhuǎn)換3.2.4數(shù)組和字符串的轉(zhuǎn)換數(shù)組和字符串之間轉(zhuǎn)換使用的函數(shù):3.2.4數(shù)組和字符串的轉(zhuǎn)換explode()函數(shù):使用字符串分割另一個字符串,返回數(shù)組。第1個參數(shù)是分隔符,第2個參數(shù)是要分割的字符串,第3個是可選參數(shù),表示返回結(jié)果最多包含的元素個數(shù),當(dāng)為負(fù)數(shù)m時,返回除最后m個元素外的所有元素,當(dāng)為0時,則把它當(dāng)做1處理。explode()函數(shù)3.2.4數(shù)組和字符串的轉(zhuǎn)換//①使用“n”作為分隔符對字符串進行分割//輸出結(jié)果:array(3){[0]=>string(2)"ba"[1]=>string(1)"a"[2]=>string(1)"a"}var_dump(explode('n','banana'));//②第3個參數(shù)為正數(shù),表示規(guī)定最多分割成幾個元素//輸出結(jié)果:array(2){[0]=>string(2)"ba"[1]=>string(3)"ana"}var_dump(explode('n','banana',2));//③第3個參數(shù)為負(fù)數(shù),表示返回除最后幾個元素外的所有元素//輸出結(jié)果:array(1){[0]=>string(2)"ba"}var_dump(explode('n','banana',-2));字符串分割數(shù)組代碼示例3.2.4數(shù)組和字符串的轉(zhuǎn)換$arr=[1,2,3]; //定義一個數(shù)組echoimplode(',',$arr); //輸出結(jié)果:1,2,3implode()函數(shù):通過指定的連接符將數(shù)組拼接成一個字符串,第1個參數(shù)是連接符,第2個參數(shù)是待處理的數(shù)組。implode()函數(shù)數(shù)組轉(zhuǎn)換字符串代碼示例3.2.5【案例】訂貨單

先定一個小目標(biāo)!掌握訂貨單案例的實現(xiàn),能夠通過數(shù)組保存訂貨單的數(shù)據(jù),并在頁面中輸出展示3.2.5【案例】訂貨單需求分析利用數(shù)組統(tǒng)計用戶的訂貨單的總價,例如,賣家賣了產(chǎn)自廣東的3個主板、產(chǎn)自上海的2個顯卡、產(chǎn)自北京的5個硬盤,它們的單價分別為379、799元、589元。3.3常用數(shù)組函數(shù)3.3.1基本數(shù)組函數(shù)

先定一個小目標(biāo)!掌握基本數(shù)組函數(shù)的使用,能夠?qū)崿F(xiàn)求數(shù)組元素個數(shù)、建立數(shù)組、合并數(shù)組、分割數(shù)組等操作3.3.1基本數(shù)組函數(shù)函數(shù)名功能描述count()計算數(shù)組中元素的個數(shù)range()建立一個包含指定范圍元素的數(shù)組array_merge()合并一個或多個數(shù)組array_chunk()將一個數(shù)組分割成多個數(shù)組基本數(shù)組函數(shù):用于統(tǒng)計數(shù)組元素個數(shù)、合并等操作。3.3.1基本數(shù)組函數(shù)$stu=[ ['Tom','male',18], ['Alice','female',15], ['Julia','female',14]];echocount($stu); //輸出結(jié)果:3echocount($stu,1); //輸出結(jié)果:12案例:基本數(shù)組函數(shù)使用示例3.3.2數(shù)組排序函數(shù)

先定一個小目標(biāo)!掌握數(shù)組排序函數(shù)的使用,能夠?qū)?shù)組元素進行正序、逆序等方式排列3.3.2數(shù)組排序函數(shù)函數(shù)名功能描述函數(shù)名功能描述sort()對數(shù)組排序asort()對數(shù)組進行排序并保持索引關(guān)系rsort()對數(shù)組逆向排序arsort()對數(shù)組進行逆向排序并保持索引關(guān)系ksort()對數(shù)組按照鍵名排序shuffle()打亂數(shù)組順序krsort()對數(shù)組按照鍵名逆向排序array_reverse()返回一個單元順序相反的數(shù)組數(shù)組排序函數(shù):用于對數(shù)組中的元素進行比較。3.3.2數(shù)組排序函數(shù)$arr=['dog','lion','cat'];sort($arr,SORT_NATURAL);//輸出結(jié)果:Array([0]=>cat[1]=>dog[2]=>lion)print_r($arr); 案例:數(shù)組排序函數(shù)使用示例3.3.3數(shù)組檢索函數(shù)

先定一個小目標(biāo)!掌握數(shù)組檢索函數(shù)的使用,能夠?qū)?shù)組中的鍵、值進行查找3.3.3數(shù)組檢索函數(shù)函數(shù)名功能描述函數(shù)名功能描述array_search()在數(shù)組中搜索給定的值array_rand()從數(shù)組中隨機取出一個或多個單元array_unique()移除數(shù)組中重復(fù)的值key()從關(guān)聯(lián)數(shù)組中取得鍵名array_column()返回數(shù)組中指定的一列in_array()檢查數(shù)組中是否存在某個值array_keys()返回數(shù)組中鍵名array_values()返回數(shù)組中所有的值數(shù)學(xué)檢索函數(shù):用于對數(shù)組中的鍵、值進行查找、獲取。3.3.3數(shù)組檢索函數(shù)$tel=['110','120','119'];//輸出結(jié)果:Gotit!echoin_array('120',$tel)?'Gotit!':'notfound!';//輸出結(jié)果:notfound!echoin_array(120,$tel,true)?'Gotit!':'notfound!';案例:數(shù)組檢索函數(shù)使用示例3.3.4【案例】雙色球

先定一個小目標(biāo)!掌握雙色球案例的實現(xiàn),能夠通過編程實現(xiàn)雙色球的選號功能3.3.4【案例】雙色球需求分析雙色球分為紅色球號碼區(qū)和藍色球號碼區(qū),每注投注號碼是由6個紅色球號碼和1個藍色球號碼組成,紅色球號碼從1~33中選取,藍色球號碼從1~16中選取,通過數(shù)組函數(shù)實現(xiàn)機選雙色球號碼的投注。雙色球號碼示例3.4文件包含語句3.4文件包含語句

先定一個小目標(biāo)!掌握文件包含語句的使用,能夠?qū)⒐泊a抽取到另一個文件,然后包含到當(dāng)前腳本中使用3.4文件包含語句文件包含語句的作用:3.4文件包含語句文件包含語句:include、require、include_once和require_once。//第一種寫法:include'完整路徑文件名';//第二種寫法:include('完整路徑文件名');語法格式3.4文件包含語句require語句與include語句的區(qū)別:文件未找到:include語句發(fā)生警告信息,程序繼續(xù)運行;require語句發(fā)生致命錯誤,程序停止運行。被包含文件的加載時間:程序執(zhí)行到include語句才會調(diào)用,require語句在程序開始執(zhí)行時則立即調(diào)用。3.5替代語法3.5.1什么是替代語法

先定一個小目標(biāo)!熟悉替代語法的使用,能夠利用替代語法在HTML模板中輸出數(shù)據(jù)3.5.1什么是替代語法替代語法:在HTML模板中嵌入PHP代碼時,將一些語句替換成可讀性更好的語法。把if、while、f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論