PHP函數(shù)
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供城中企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站制作、HTML5、小程序制作等業(yè)務(wù)。10年已為城中眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
在PHP中,函數(shù)是一段PHP代碼的集合,通過調(diào)用函數(shù)就可以執(zhí)行一些任務(wù)或返回一些結(jié)果。PHP腳本通常是由主程序和函數(shù)構(gòu)成的,這些函數(shù)不僅構(gòu)成了PHP腳本的主要功能,也實現(xiàn)了程序代碼的結(jié)構(gòu)化,方便他人閱讀。
函數(shù)可以分為用戶自定義函數(shù)和系統(tǒng)函數(shù),用戶自定義函數(shù)是有用戶自行編寫實現(xiàn)的,功能也由用戶所編寫的代碼來決定。系統(tǒng)函數(shù)是PHP系統(tǒng)或擴展庫內(nèi)置的函數(shù),這些函數(shù)一般已經(jīng)存在,直接調(diào)用即可。
一、用戶自定義函數(shù)
定義函數(shù)的格式如下:
function function_name([$parameter[,...]]) { //函數(shù)代碼段 }
定義函數(shù)的關(guān)鍵字為function。function_name是用戶自定義的函數(shù)名,通常這個函數(shù)名可以是以字母或下劃線開頭后面跟0個或多個字母、下劃線和數(shù)字的字符串,且不區(qū)分大小寫,需要注意的是,函數(shù)名不能與系統(tǒng)函數(shù)或用戶已經(jīng)定義的函數(shù)重名。
$parameter為函數(shù)的參數(shù),函數(shù)一般可以有0個或多個參數(shù)。當參數(shù)個數(shù)為0時,函數(shù)可以被直接調(diào)用,當參數(shù)個數(shù)不為0時,用戶在調(diào)用時就需要提供有效的參數(shù)。
在函數(shù)定義時,花括號內(nèi)的代碼就是在調(diào)用函數(shù)時將會執(zhí)行的代碼,這段代碼可以包括變量、表達式、流程控制語句,甚至是其他的函數(shù)或類定義。
二、參數(shù)的傳遞
一般情況下,參數(shù)是通過值來傳遞的。通過值傳遞參數(shù)不會應(yīng)為函數(shù)內(nèi)部參數(shù)值的變化而改變函數(shù)外部的值。
如果希望函數(shù)修改外部傳來的參數(shù)值,可以使用引用參數(shù)傳遞,只要在定義函數(shù)時在參數(shù)前面加上“&”。
函數(shù)還可以使用默認參數(shù),在定義函數(shù)時給參數(shù)賦予默認值,參數(shù)的默認值必須是常量表達式,不能是變量、類成員或函數(shù)調(diào)用。在使用默認參數(shù)時,任何默認參數(shù)都要放在非默認參數(shù)的右側(cè),否則函數(shù)可能不會按預(yù)期情況工作。
三、函數(shù)的作用域
在主程序定義的變量和在函數(shù)中定義的變量都是局部變量。在函數(shù)中定義的變量只能在函數(shù)內(nèi)部使用。在主程序中定義的變量只能在主程序中使用,而不能在函數(shù)中使用。如果要使函數(shù)中的變量作用于函數(shù)外部,需要使用global關(guān)鍵字將變量聲明為全局變量。函數(shù)中的變量還可以聲明為靜態(tài)變量,函數(shù)被調(diào)用完后靜態(tài)變量的值并不丟失,在下次調(diào)用該函數(shù)時,靜態(tài)變量的值是上次調(diào)用函數(shù)時賦的值。
四、函數(shù)的返回值
函數(shù)聲明時,在函數(shù)代碼中使用return語句可以立即結(jié)束函數(shù)的運行,程序返回到調(diào)用該函數(shù)的下一條語句。
中斷函數(shù)執(zhí)行并不是return語句最常用的功能,許多函數(shù)使用return語句返回一個值來與調(diào)用它們的代碼進行交互。函數(shù)的返回值可以是任何類型的值,包括列表和對象。
五、函數(shù)的調(diào)用
函數(shù)在聲明后就可以被調(diào)用。函數(shù)如果沒有返回值,調(diào)用時使用函數(shù)名即可。如果函數(shù)具有返回值,則可以將函數(shù)的返回值賦給一個變量。
六、遞歸函數(shù)
PHP支持遞歸函數(shù),遞歸函數(shù)就是調(diào)用函數(shù)本身,可以實現(xiàn)循環(huán)的作用。
使用遞歸函數(shù)時一定要給出遞歸的終止條件,否則函數(shù)將一直執(zhí)行下去直到服務(wù)器內(nèi)存耗盡,或達到最大調(diào)用次數(shù)。
七、變量函數(shù)
PHP中有變量函數(shù)這個概念,在變量的后面加上一對小括號就構(gòu)成了一個變量函數(shù)。
如果創(chuàng)建了變量函數(shù),PHP腳本運行時將尋找與變量名相同的函數(shù),如果函數(shù)存在,則嘗試執(zhí)行該函數(shù),如果不存在則產(chǎn)生一個錯誤。為防止這類錯誤,可以在調(diào)用變量函數(shù)之前使用PHP的function_exist()函數(shù)來判斷該變量函數(shù)是否存在。
變量函數(shù)不能用于語言結(jié)構(gòu),如echo()、print()、unset()、include()、require()、isset()。
八、系統(tǒng)函數(shù)
用戶自定義函數(shù)可以進行邏輯運算,而大部分的系統(tǒng)底層工作需要由系統(tǒng)函數(shù)來完成。
PHP系統(tǒng)了豐富的系統(tǒng)函數(shù)供用戶使用,包括文件系統(tǒng)函數(shù)、數(shù)組函數(shù)、字符串函數(shù)等。并不是所有的系統(tǒng)函數(shù)都能直接調(diào)用,有一些擴展的系統(tǒng)函數(shù)需要安裝擴展庫之后才能調(diào)用。當前運行環(huán)境支持的函數(shù)列表可以在phpinfo頁面查看。