




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PHP函數(shù)的應(yīng)用01主講:郵箱:回顧PHP中的都有哪些分支結(jié)構(gòu)?PHP中都有哪些循環(huán)結(jié)構(gòu)?break和continue的區(qū)別?預(yù)習(xí)檢查PHP中的函數(shù)都有哪些優(yōu)越性?如何定義一個函數(shù)?PHP變量的范圍?都有哪些自定義函數(shù)的形式?本章任務(wù)函數(shù)的定義自定義函數(shù)函數(shù)的工作原理和結(jié)構(gòu)化編程PHP變量的作用域及應(yīng)用各種形式的PHP函數(shù)1.函數(shù)的定義函數(shù)是什么:函數(shù)(function)是一段完成指定任務(wù)的已命名代碼塊。函數(shù)可以遵照給它的一組值或參數(shù)完成特定的任務(wù),并且可能返回一個值。在PHP中有兩種函數(shù):自定義函數(shù)與系統(tǒng)函數(shù)。函數(shù)的優(yōu)越性:控制程序設(shè)計的復(fù)雜性提高 的可靠性提高
的開發(fā)效率提高
的可
性提高程序的重用性2.自定義函數(shù)自定義函數(shù)語法格式:function
函數(shù)名稱([參數(shù)1[,參數(shù)2[,…]]]){程序內(nèi)容敘述(也叫函數(shù)體);[return
返回值;]//如需函數(shù)有返回值時使用}函數(shù)的使用:函數(shù)名稱([參數(shù)1[,參數(shù)2[,…]]]);自定義函數(shù)的名稱:它是函數(shù)在程序代碼中的識別名稱,函數(shù)名可以是以字母或下劃線開頭后跟零個或多個字母、下劃線和數(shù)字的任何字符串。函數(shù)名不區(qū)分大小寫。命名函數(shù)時不可使用已 的函數(shù),或PHP內(nèi)建的函數(shù)名稱。參數(shù):所謂的參數(shù)就是用來把數(shù)值由函數(shù)外部傳入函數(shù)體中,并用來加以運算處理。參數(shù)之間用“,”號隔開。當函數(shù)不需要任何數(shù)值傳入時,可以省略參數(shù)。返回值:當調(diào)用函數(shù)時需要它返回一些數(shù)值,那么就要函數(shù)體中用return語句實現(xiàn)。格式如下:return
返回值;exit();//返回值也可以是一個表達式//無返回值void實例:<?phpecho“用函數(shù)求累加:<br>";function
test($a){$sum=0;for($i=0;$i<=$a;$i++)$sum+=$i;return
$sum;}echo"50的累加是:".test(50)."<br>";echo"100的累加是:".test(100)."<br>";?>3.
函數(shù)的工作原理和結(jié)構(gòu)化編程詳見數(shù)168頁判斷函數(shù)是否存在在PHP中,函數(shù)可以在被調(diào)用之前定義,也可以在被調(diào)用之后定義。function_exists()--判斷函數(shù)是否存在。變量的范圍當主程序調(diào)用函數(shù)時,PHP會暫時停止目前主要程序流程的運行,并傳遞必要的運算參數(shù)給目標函數(shù)使用,以執(zhí)行函數(shù)的程序碼片段。在函數(shù)執(zhí)行結(jié)束后,函數(shù)會回傳執(zhí)行結(jié)果所得的數(shù)值,并將執(zhí)行流程轉(zhuǎn)回原本主程序中斷的地方,繼續(xù)執(zhí)行
。變量的能見度所謂變量的能見度,意指變量在程序中的可作用范圍。當一個變局部的差異,而有不同的作用范的局部分為下列兩種:局部變量量執(zhí)行賦值動作后,會隨著圍。大致上來說變量會依據(jù)和全局變量4.PHP變量的范圍4.1
局部變量( 變量)在函數(shù)之中的變量就是局部變量,并且該變量只有在函數(shù)范圍之中才能加以使用。如果其它程序局部需要調(diào)用使用該變量值時,必須透過「return」指令,來將其傳回至主程序區(qū)塊以作后續(xù)處理。<?php$a=0;function
print_A(){$a
=3;
//定義局部變量echo"在函數(shù)中顯示局部變量a值:$a<p>";return
$a;}$b
=
print_A();echo"在函數(shù)外顯示局部變量b值:$b<br>";echo
$a;?>4.2全局變量在函數(shù)范圍之外所
的變量就是全局變量。由于函數(shù)可以視為單獨的程序片段,所以局部變量會復(fù)蓋全局變量的能見度,因此在函數(shù)中并無法直接調(diào)用使用全局變量。函數(shù)中若要使用全局變量時,必須要利用global關(guān)鍵字定義目標變量,以告訴函數(shù)主體此變量為全局。<?php$A=“
o
!!”;function
print_A()
{global
$A;//定義全局變量//定義函數(shù)print_A()//利用global關(guān)鍵字變量A為全局變量echo
$A;}print_A();?>也可以使用預(yù)定義的全局變量數(shù)組$GLOBALS.這是一個特殊變量在程序運行時自動創(chuàng)建。格式:echo
$GLOBALS[“A”];注
意
事
項在函數(shù)中 全局變量時,其名字要與全局變量一致通過unset($var)可以手動刪除變量,變量會在內(nèi)存中被釋放,也就不在全局作用域中了。使用require與include包含不會影響作用域通過參數(shù)列表傳遞給函數(shù)的變量,對于函數(shù)來說是局部變量,除非在傳遞時帶有& 符號4.3靜態(tài)變量PHP支持函數(shù)變量為靜態(tài)的(static)。一個靜態(tài)變量在所有對該函數(shù)的調(diào)用之間共享,并且僅在
的執(zhí)行期間函數(shù)第一次被調(diào)用時被初始化。要
函數(shù)變量為靜態(tài)的用關(guān)鍵字static。通常,靜態(tài)變量的第一次使用時賦予一個初始值。<?phpfunction
test(){static
$a
=
0;echo
$a;$a++;}?>5.及應(yīng)用各種形式的PHP函數(shù)常規(guī)參數(shù)的函數(shù)偽類型參數(shù)的函數(shù)參數(shù)的函數(shù)默認參數(shù)的函數(shù)可變個數(shù)參數(shù)的函數(shù)回調(diào)函數(shù)都要可通過無論是使用系統(tǒng)函數(shù)還是自定義的函數(shù),如下函數(shù)的三要素來了解一個函數(shù):函數(shù)的功能描述函數(shù)的參數(shù)函數(shù)的返回值5.1
常規(guī)參數(shù)的函數(shù)常規(guī)參數(shù)的函數(shù)格式說明:string
example(string
name,int
age,double
height)所謂的常規(guī)參數(shù)的函數(shù),就是實參和形參應(yīng)該個數(shù)相等、類型一致。就像C或Java等強類型型語言。上面函數(shù)有三個參數(shù),調(diào)用時傳遞的參數(shù)個數(shù)和順序必須一致。string
chr(int
$ascii)
//返回指定的字符float
ceil(float
$value)//進一法取整array bine(array
$keys,array
$values)//合并一個數(shù)組string
implode(string
$glue,array$pieces)5.2
偽類型參數(shù)的函數(shù)偽類型參數(shù)的函數(shù)格式說明:mixedfunName(mixed
$a,
number
$b,
callback
$c)PHP是弱類型語言,不僅在變量時不需要指定類型,當然在函數(shù)時也不需要指定類型,所以在PHP中函數(shù)的每個參數(shù),都可以為其傳遞任意類型的值。三種偽類型:
mixed、number
和
callback。bool
empty(mixed
$var)
//檢查一個變量是否為空bool
usort(array
&$array,callback
$cmp_function)//使用用戶自定義的比較函數(shù)對數(shù)組中的值進行排序number
abs(mixed
$number)
//絕對值5.3
參數(shù)的函數(shù)參數(shù)的函數(shù)格式說明:void
funName(array
&args)相對于按值傳遞模式,并不會將父程序中的指定數(shù)值或目標變量傳遞給函數(shù),而是把該數(shù)值或變量的內(nèi)存區(qū)塊相對地址導(dǎo)入函數(shù)之中。因此當該數(shù)值在函數(shù)中有任何變動時,會連帶對父程序造成影響。注意:如果在函數(shù)的形參中使用“&“修飾的參數(shù),在調(diào)用該函數(shù)時必須傳入一個變量給這個參數(shù),而是不能傳遞一個值。<?php//使用常規(guī)參數(shù)傳值function
test($arg)
{$arg
=200;//在函數(shù)中改變參數(shù)$a的值為200}$var=
100;test($var);echo
$var;//在父程序中 一個全局變量$var,初值為100//調(diào)用test函數(shù),并將變量$var的值100傳給函數(shù)的參數(shù)$arg//輸出100。$var的值沒有變化//使用“&” 參數(shù)傳值function
test(
&$arg
)
{$arg
=
200;
//改變參數(shù)$a的值為200,$arg是 參數(shù),外部變量$var也被修改}$var=
100;test($var);echo
$var;//在父程序中 一個全局變量$var,初值為100//調(diào)用test函數(shù),并將變量$var的
傳給函數(shù)的參數(shù)$arg//輸出200。$var的值在函數(shù)中修改變量$arg時被修改5.4默認參數(shù)的函數(shù)默認參數(shù)(“[]”中的)的函數(shù)格式說明:mixed
funName(string
name[,string
value[,int
num]])在php中,支持函數(shù)的默認方式調(diào)用。如果在調(diào)用函數(shù)時沒有指定參數(shù)的值,在函數(shù)中會使用參數(shù)的默認值。注意:默認參數(shù)必須列在所有沒有默認值參數(shù)的后面。,用于打印一個人的屬性人的名子屬性字符串,默認值為"
"<?php/**自定義一個函數(shù)名稱為@param
string
$name@param
int
$age@param
string
$sex人的人的屬性,默認值為20屬性,默認值為"男"(
$name="",$age=20,$sex="男"){名字是:{$name},為:{$age},:
{$sex}<br>";*/functionecho"}();
//在調(diào)用函數(shù)時三個參數(shù)都沒有傳值,全部使用默認參數(shù)("
");
//第一個默認參數(shù)被傳入的值覆蓋,后兩個參數(shù)使用默認參數(shù)(“("”,22);
//前兩個默認參數(shù)被傳入的值覆蓋,最后一個使用默認參數(shù)",
18,
"女");
//在調(diào)用函數(shù)時,三個默認參數(shù)都被傳入的值覆蓋5.5
可變個數(shù)參數(shù)的函數(shù)可變個數(shù)參數(shù)的函數(shù)格式說明:mixed
funName(string
arg1
[,string
...]
)通常用戶定義函數(shù)時,設(shè)置的參數(shù)數(shù)量是有限的。如果希望函數(shù)可以接受任意數(shù)量的參數(shù),需使用以下函數(shù):func_get_args()
//返回一個數(shù)組,包含所有參數(shù)func_num_args()
//返回參數(shù)總數(shù)func_get_arg()
//接收一個數(shù)字參數(shù),返回指定參數(shù)<?php/**一個函數(shù)more_args(),用于打印參數(shù)列表的值雖然沒有 參數(shù)列表,但可以傳入任意個數(shù),任意類型的參數(shù)值*/function
more_args()
{$args
=
func_get_args();//將所有傳遞給 函數(shù)的參數(shù)當做一個數(shù)組返回for($i=0;
$i<count($args);
$i++)
{//使用for循環(huán)遍歷數(shù)組$argsecho
"第".$i."個參數(shù)是".$args[$i]."<br>";//分別輸出傳入函數(shù)的每個參數(shù)}}more_args("one",
"two",
"three",
1,
2,
3);//調(diào)用函數(shù)并輸入多個參數(shù)function
more_args()
{for($i=0;$i<func_num_args();$i++){
//使用for循環(huán)遍歷數(shù)組$argsecho
"第".$i."個參數(shù)是".func_get_arg($i)."<br>";//分別輸出傳入函數(shù)的每個參數(shù)}}more_args("one",
"two",
"three",
1,2,
3);//調(diào)用函數(shù)并輸入多個參數(shù)5.6
回調(diào)函數(shù)回調(diào)函數(shù)格式說明:mixed
funName(callback
arg)所謂回調(diào)函數(shù),就是指調(diào)用函數(shù)時并不是傳遞一個標準的變量作為參數(shù),而是將另一函數(shù)作為參數(shù)傳遞到調(diào)用的函數(shù)中。變量函數(shù)使用變量函數(shù) 和應(yīng)用的回調(diào)函數(shù)借助call_user_func_array()函數(shù)自定義回調(diào)函數(shù)
4.類靜態(tài)函數(shù)和對象的方法回調(diào)5.6.1
變量函數(shù)<?php/**第一個函數(shù)one,
計算兩個數(shù)的和@param
int
$a計算和的第一個運算元
@param
int
$b
計算和的第二個運算元
@return
int
返回計算后的結(jié)果*/function
one(
$a,
$b
)
{return
$a
+
$b;}/**
第二個函數(shù)two,計算兩個數(shù)的平方和*/function
two($a,
$b)
{return
$a*$b
+
$b*$b;}$result
="one";
//將函數(shù)名"one"賦給變量$result,
執(zhí)行$result()時則調(diào)用函數(shù)one()//$result="two";//將函數(shù)名"two"賦給變量$result,
執(zhí)行$result()時則調(diào)用函數(shù)two()echo
“運算結(jié)果是:”.$result(2,
3);
//變量$result的函數(shù)名值,就調(diào)用哪個函數(shù)5.6.2
使用變量函數(shù) 和應(yīng)用的回調(diào)函數(shù)<?php//
回調(diào)函數(shù)filter,在0-100的整數(shù)中通過自定義條件過濾不要的數(shù)字function
filter(
$fun
)
{for($i=0;
$i
<=
100;
$i++)
{//將參數(shù)變量$fun加上一個圓插號$fun(),則為調(diào)用和變量$fun值同名的函數(shù)if(
$fun($i)
)continue;echo
$i.'<br>';}}//
一個函數(shù)one,如果參數(shù)是3的倍數(shù)就返回true,否則返回falsefunction
one($num)
{return
$num%3
==0;}//
一個函數(shù)two,如果參數(shù)是一個回文數(shù)(翻轉(zhuǎn)后還等于自己的數(shù))返回true,否則返回falsefunction
two($num)
{return
$num
==
strrev($num);}filter("one");
//打印出100以內(nèi)非3的倍數(shù),參數(shù)"one"是函數(shù)one()的名稱字符串,是一個回調(diào)echo
'
<br>';filter('two');
//打印出100以內(nèi)非回文數(shù),參數(shù)"two"是函數(shù)two()的名稱字符串,是一個回調(diào)5.6.3借助call_user_func_array()函數(shù)自定義回調(diào)函數(shù)<?php/**一個函數(shù)fun(),功能只輸出兩個字符串,目的是作為call_user_func_array()回調(diào)參數(shù)@param
string
$msg1@param
string
$msg2需要傳遞一個字符串作為參數(shù)需要傳遞另一個字符串作為參數(shù)*/function
fun($msg1,
$msg2)
{echo
'$msg1
='.$msg1;echo
'<br>';echo
'$msg2
=
'.$msg2;}/**
通過系統(tǒng)函數(shù)call_user_func_a
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)出資合同范本
- 農(nóng)村廚子采購合同范本
- 勘察設(shè)計合同范本全國
- 2024年河南信陽一五四醫(yī)院招聘筆試真題
- 2024重慶鏡辰美科技有限公司招聘筆試參考題庫附帶答案詳解
- 出售養(yǎng)殖用地合同范本
- 人教版七年級歷史與社會上冊 3.3.1耕海牧漁教學(xué)設(shè)計
- 買窯洞合同范本
- 臨勤合同范本
- 助播商務(wù)合同范本
- 小學(xué)生課程表模板可編輯78
- 政府招商大使合作協(xié)議書
- 營養(yǎng)科專業(yè)知識考核試卷
- AQ/T 9009-2015 生產(chǎn)安全事故應(yīng)急演練評估規(guī)范(正式版)
- NB-T47044-2014電站閥門-標準
- 火鍋店運營管理的問題與解決方案
- 安全技術(shù)管理專業(yè)畢業(yè)實習(xí)報告范文
- 病媒生物防治操作規(guī)程
- 2024年社會工作者《社會工作實務(wù)(中級)》考試真題必考題
- 德育教育研究課題申報書
- (高清版)JTG 3810-2017 公路工程建設(shè)項目造價文件管理導(dǎo)則
評論
0/150
提交評論