![PHP教程課件:PHP函數(shù)_第1頁](http://file4.renrendoc.com/view5/M01/15/11/wKhkGGYWkSaAJLAoAABGuwArjIk776.jpg)
![PHP教程課件:PHP函數(shù)_第2頁](http://file4.renrendoc.com/view5/M01/15/11/wKhkGGYWkSaAJLAoAABGuwArjIk7762.jpg)
![PHP教程課件:PHP函數(shù)_第3頁](http://file4.renrendoc.com/view5/M01/15/11/wKhkGGYWkSaAJLAoAABGuwArjIk7763.jpg)
![PHP教程課件:PHP函數(shù)_第4頁](http://file4.renrendoc.com/view5/M01/15/11/wKhkGGYWkSaAJLAoAABGuwArjIk7764.jpg)
![PHP教程課件:PHP函數(shù)_第5頁](http://file4.renrendoc.com/view5/M01/15/11/wKhkGGYWkSaAJLAoAABGuwArjIk7765.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PHP函數(shù)函數(shù)自定義函數(shù)變量的范圍函數(shù)的參數(shù)傳遞變量函數(shù)遞歸代碼重用自定義函數(shù)函數(shù)的定義:
函數(shù)(function)是一段完成指定任務(wù)的已命名代碼,函數(shù)可以遵照給它的一組值或參數(shù)完成任務(wù),并且可能返回一個(gè)值。使用函數(shù)可以節(jié)省編譯時(shí)間,因?yàn)闊o論調(diào)用多少次,函數(shù)只需被編譯一次。函數(shù)的優(yōu)越性:控制程序設(shè)計(jì)的復(fù)雜性提高軟件的可靠性提高軟件的開發(fā)效率提高軟件的可維護(hù)性提高程序的重用性自定義函數(shù)語法格式:
function函數(shù)名稱(參數(shù)1,參數(shù)2…)
{
程序內(nèi)容敘述;
return返回值;//如需函數(shù)有返回值時(shí)使用; }函數(shù)的使用:函數(shù)名稱(參數(shù)1,參數(shù)2…);自定義函數(shù)的名稱:
它是函數(shù)在程序代碼中的識(shí)別名稱,函數(shù)名可以是以字母或下劃線開頭后跟零個(gè)或多個(gè)字母、下劃線和數(shù)字的任何字符串。函數(shù)名不區(qū)分大小寫。命名函數(shù)時(shí)不可使用已聲明的函數(shù),或PHP內(nèi)建的函數(shù)名稱。參數(shù): 所謂的參數(shù)就是用來把數(shù)值由函數(shù)外部傳入函數(shù)體中,并用來加以運(yùn)算處理。參數(shù)之間用“,”號隔開。當(dāng)函數(shù)不需要任何數(shù)值傳入時(shí),可以省略參數(shù)。返回值: 當(dāng)調(diào)用函數(shù)時(shí)需要它返回一些數(shù)值,那么就要函數(shù)體中用return語句實(shí)現(xiàn)。格式如下:
return返回值;//返回值也可以是一個(gè)表達(dá)式
exit();//無返回值void實(shí)例:<?php echo“用函數(shù)求累加:<br>"; functiontest($a) { $sum=0; for($i=0;$i<=$a;$i++) $sum+=$i; return$sum; } echo"50的累加是:".test(50)."<br>"; echo"100的累加是:".test(100)."<br>";?>判斷函數(shù)是否存在在PHP中,函數(shù)可以在被調(diào)用之前定義,也可以在被調(diào)用之后定義。function_exists()判斷函數(shù)是否存在。變量的范圍當(dāng)主程序調(diào)用函數(shù)時(shí),PHP會(huì)暫時(shí)停止目前主要程序流程的運(yùn)行,并傳遞必要的運(yùn)算參數(shù)給目標(biāo)函數(shù)使用,以執(zhí)行函數(shù)的程序碼片段。在函數(shù)執(zhí)行結(jié)束后,函數(shù)會(huì)回傳執(zhí)行結(jié)果所得的數(shù)值,并將執(zhí)行流程轉(zhuǎn)回原本主程序中斷的地方,繼續(xù)執(zhí)行運(yùn)作。變量的能見度所謂變量的能見度,意指變量在程序中的可作用范圍。當(dāng)一個(gè)變量執(zhí)行賦值動(dòng)作后,會(huì)隨著聲明局部的差異,而有不同的作用范圍。大致上來說變量會(huì)依據(jù)聲明的局部分為下列兩種:局部變量和全局變量局部變量在函數(shù)之中聲明的變量就是局部變量,并且該變量只有在函數(shù)范圍之中才能加以使用。如果其它程序局部需要調(diào)用使用該變量值時(shí),必須透過「return」指令,來將其傳回至主程序區(qū)塊以作后續(xù)處理。<?php $A=0;functionprint_A(){$A=3; //定義局部變量
echo"在函數(shù)中顯示局部變量A值:$A<p>"; return$A;}$B=print_A(); echo"在函數(shù)外顯示局部變量A值:$B<br>"; echo$A;?>全局變量在函數(shù)范圍之外所聲明的變量就是全局變量。由于函數(shù)可以視為單獨(dú)的程序片段,所以局部變量會(huì)復(fù)蓋全局變量的能見度,因此在函數(shù)中并無法直接調(diào)用使用全局變量。函數(shù)中若要使用全局變量時(shí),必須要利用global關(guān)鍵字定義目標(biāo)變量,以告訴函數(shù)主體此變量為全局。
<?php $A=“Hello!!”;
//定義全局變量 functionprint_A(){
//定義函數(shù)print_A()
global$A;
//利用global關(guān)鍵字聲明變量A為全局變量 echo$A; } print_A();
?>也可以使用預(yù)定義的全局變量數(shù)組$GLOBALS.這是一個(gè)特殊變量在程序運(yùn)行時(shí)自動(dòng)創(chuàng)建。echo$GLOBALS[“A”];注意事項(xiàng)在函數(shù)中聲明全局變量時(shí),其名字要與全局變量一致通過unset($var)可以手動(dòng)刪除變量,變量會(huì)在內(nèi)存中被釋放,也就不在全局作用域中了。使用require與include包含不會(huì)影響作用域通過參數(shù)列表傳遞給函數(shù)的變量,對于函數(shù)來說是局部變量,除非在傳遞時(shí)帶有&引用符號靜態(tài)變量
PHP支持聲明函數(shù)變量為靜態(tài)的(static)。一個(gè)靜態(tài)變量在所有對該函數(shù)的調(diào)用之間共享,并且僅在腳本的執(zhí)行期間函數(shù)第一次被調(diào)用時(shí)被初始化。要聲明函數(shù)變量為靜態(tài)的用關(guān)鍵字static。通常,靜態(tài)變量的第一次使用時(shí)賦予一個(gè)初始值。
<?php
functionTest(){
static
$a=0;
echo$a;
$a++;
}
?>參數(shù)的傳遞 在了解變量的能見度之后,接著來看看函數(shù)中的參數(shù)如何傳遞。所謂的參數(shù)傳遞,其實(shí)就是在執(zhí)行函數(shù)前導(dǎo)入某些數(shù)值,以提供函數(shù)處理執(zhí)行。PHP中傳遞參數(shù)的方式有:按值傳遞參數(shù)父程序直接傳遞指定的值或是變量給函數(shù)使用。由于所傳遞的值或變量,與函數(shù)里的數(shù)值分別儲(chǔ)存于不同的內(nèi)存區(qū)塊,所以當(dāng)函數(shù)對所導(dǎo)入的數(shù)值作了任何變動(dòng)時(shí),并不會(huì)對父程序造成直接影響。 按址傳遞參數(shù)(用“&”符號實(shí)現(xiàn))相對于按值傳遞模式,并不會(huì)將父程序中的指定數(shù)值或目標(biāo)變量傳遞給函數(shù),而是把該數(shù)值或變量的內(nèi)存儲(chǔ)存區(qū)塊相對地址導(dǎo)入函數(shù)之中。因此當(dāng)該數(shù)值在函數(shù)中有任何變動(dòng)時(shí),會(huì)連帶對父程序造成影響。
<?php$A="Today";$B="Monday";functionprint_A($A,&$B) { $B=$A."is".$B; echo"函數(shù)中變量A與變量B的值為<br>"; echo"變量A:$A<br>"; echo"變量B:$B<p>";}//以傳址方式導(dǎo)入變量Bprint_A($A,$B);echo"主程序中變量A與變量B的值為<br>";echo"變量A:$A<br>";echo"變量B:$B<p>"; ?>默認(rèn)參數(shù)
在php中,支持函數(shù)的默認(rèn)方式調(diào)用。如果在調(diào)用函數(shù)時(shí)沒有指定參數(shù)的值,在函數(shù)中會(huì)使用參數(shù)的默認(rèn)值。默認(rèn)參數(shù)必須列在所有沒有默認(rèn)值參數(shù)的后面。
<?php functionfun_sum($a,$b=0,$c=0) { return$a+$b+$c; } echofun_sum(10,20); echofun_sum(10,20,30); ?>任意數(shù)量的參數(shù)列表通常,用戶定義函數(shù)時(shí),設(shè)置的參數(shù)數(shù)量是有限的。如果希望函數(shù)可以接受任意數(shù)量的參數(shù),需使用以下函數(shù):func_get_args()//返回一個(gè)數(shù)組,包含所有參數(shù)func_num_args()//返回參數(shù)總數(shù)func_get_arg()//接收一個(gè)數(shù)字參數(shù),返回指定參數(shù)變量函數(shù)
PHP支持變量函數(shù)的概念。這意味著如果一個(gè)變量名后有圓括號,PHP將尋找與變量的值同名的函數(shù),并且將嘗試執(zhí)行它。除了別的事情以外,這個(gè)可以被用于實(shí)現(xiàn)回調(diào)函數(shù),函數(shù)表等等。變量函數(shù)不能用于語言結(jié)構(gòu),例如echo(),print(),unset(),isset(),empty(),include(),require()以及類似的語句。需要使用自己的外殼函數(shù)來將這些結(jié)構(gòu)用作變量函數(shù)。
實(shí)例:<?php
functionfoo(){
echo"Infoo()<br/>\n";
}
functionbar($arg=''){
echo"Inbar();argumentwas'$arg'.<br/>\n";
}
//Thisisawrapperfunctionaroundecho
functionechoit($string){
echo$string;
}
$func='foo';
$func();
//Thiscallsfoo()
$func='bar';
$func('test');
//Thiscallsbar()
$func='echoit';
$func('test');
//Thiscallsechoit()?>遞歸調(diào)用所謂的函數(shù)遞歸調(diào)用,就是函數(shù)可以在其聲明的執(zhí)行敘述之中調(diào)用執(zhí)行自己。通常在此類型的函數(shù)之中會(huì)附加一個(gè)條件判斷敘述,以判斷是否需要執(zhí)行遞歸調(diào)用,并且在特定條件下終止函數(shù)的遞歸調(diào)用動(dòng)作,把目前流程的主控權(quán)交回上一層函數(shù)執(zhí)行。因此當(dāng)某個(gè)執(zhí)行遞歸調(diào)用的函數(shù),沒有附加條件判斷敘述時(shí)可能會(huì)造成無限循環(huán)的錯(cuò)誤情形.函數(shù)遞歸調(diào)用最大的好處在于可以精簡程序中繁雜重復(fù)調(diào)用程序,并且能以這種特性來執(zhí)行一些較為復(fù)雜的運(yùn)算動(dòng)作。
實(shí)例:用遞歸求n階乘
<?php echo"利用遞歸調(diào)用來運(yùn)算N的階乘<p>"; functionfacto($n) {
if($n>1){$r=$n*facto($n-1);} else{ $r=$n;} return$r;}echo"當(dāng)N值為5時(shí),階乘為:".facto(5)."<br>";echo"當(dāng)N值為10時(shí),階乘為:".facto(10);?>求n=4時(shí)階乘遞歸程序的執(zhí)行過程內(nèi)部函數(shù)就是在函數(shù)里面還可以定義函數(shù)functiondemo(){functiontest(){}functionfun(){}}代碼重用通過重復(fù)使用已有的代碼,提高開發(fā)效率,降低成本
include()和require()函數(shù)。
require()將一個(gè)文件在預(yù)處理期間被導(dǎo)入,像把該文件粘貼到使用函數(shù)的地方。
include()與require()幾乎等價(jià),區(qū)別在于在腳本執(zhí)行時(shí)包含,當(dāng)處理失敗時(shí),include()產(chǎn)生一個(gè)警告而require()則導(dǎo)致一個(gè)致命錯(cuò)誤。include_once()和requi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年元器件測試儀器合作協(xié)議書
- 2025年硫精砂合作協(xié)議書
- 2025年農(nóng)業(yè)科學(xué)研究與試驗(yàn)發(fā)展服務(wù)合作協(xié)議書
- 2025年二次加工材相關(guān)板材合作協(xié)議書
- 2024-2025學(xué)年四川省成都市崇州市四年級(上)期末數(shù)學(xué)試卷
- 2025年中國建設(shè)銀行企業(yè)網(wǎng)上銀行國際結(jié)算協(xié)議(2篇)
- 2025年親屬的股權(quán)轉(zhuǎn)讓協(xié)議范文(2篇)
- 2025年二手車帶牌轉(zhuǎn)讓協(xié)議模板(2篇)
- 2025年個(gè)人自建房購房合同標(biāo)準(zhǔn)版本(2篇)
- 2025年五年級1班第一學(xué)期班主任工作總結(jié)模版(2篇)
- 全面新編部編版四年級下冊語文教材解讀分析
- 江蘇農(nóng)牧科技職業(yè)學(xué)院單招《職業(yè)技能測試》參考試題庫(含答案)
- 三年級上冊脫式計(jì)算100題及答案
- VDA6.3 2023過程審核教材
- 烹飪實(shí)訓(xùn)室安全隱患分析報(bào)告
- 《金屬加工的基礎(chǔ)》課件
- 運(yùn)輸行業(yè)春節(jié)安全生產(chǎn)培訓(xùn) 文明駕駛保平安
- 體驗(yàn)式沙盤-收獲季節(jié)
- 老年護(hù)理陪護(hù)培訓(xùn)課件
- 2019年420聯(lián)考《申論》真題(山西卷)試卷(鄉(xiāng)鎮(zhèn)卷)及答案
- 醫(yī)院投訴糾紛及處理記錄表
評論
0/150
提交評論