- PHP從入門到精通(第4版)(軟件開發視頻大講堂)
- 明日科技
- 1612字
- 2020-11-28 17:36:31
3.8 PHP函數
在開發過程中,經常要重復某種操作或處理,如數據查詢、字符操作等,如果每個模塊的操作都要重新輸入一次代碼,不僅令程序員頭痛不已,而且對于代碼的后期維護及運行效果也有著較大的影響,使用PHP函數即可讓這些問題迎刃而解,下面即介紹這些知識。
3.8.1 定義和調用函數
視頻講解:光盤\TM\lx\3\23 定義和調用函數.mp4
函數,就是將一些重復使用到的功能寫在一個獨立的代碼塊中,在需要時單獨調用。創建函數的基本語法格式為:
function fun_name($str1, $str2…$strn){ fun_body; }
其中,function為聲明自定義函數時必須使用到的關鍵字;fun_name為自定義函數的名稱;$str1,$str2…$strn為函數的參數;fun_body為自定義函數的主體,是功能實現部分。
當函數被定義好后,所要做的就是調用這個函數。調用函數的操作十分簡單,只需要引用函數名并賦予正確的參數即可完成函數的調用。
【例3.24】在本例中定義了一個函數example(),計算傳入的參數的平方,然后連同表達式和結果全部輸出。實例代碼如下:(實例位置:光盤\TM\sl\3\24)
<?php /*聲明自定義函數*/ function example($num){ echo"$num*$num=".$num*$num; //輸出計算后的結果 } example(10); //調用函數 ?>
結果為:10 * 10 = 100
3.8.2 在函數間傳遞參數
視頻講解:光盤\TM\lx\3\24 在函數間傳遞參數.mp4
在調用函數時,需要向函數傳遞參數,被傳入的參數稱為實參,而函數定義的參數為形參。參數傳遞的方式有按值傳遞、按引用傳遞和默認參數3種。
1.按值傳遞方式
將實參的值復制到對應的形參中,在函數內部的操作針對形參進行,操作的結果不會影響到實參,即函數返回后,實參的值不會改變。
【例3.25】本例首先定義一個函數example(),功能是將傳入的參數值做一些運算后再輸出。接著在函數外部定義一個變量$m,也就是要傳進來的參數。最后調用函數example($m),輸出函數的返回值$m和變量$m的值。實例代碼如下:(實例位置:光盤\TM\sl\3\25)
<?php function example($m){ //定義一個函數 $m = $m * 5 + 10; echo"在函數內:\$m=".$m; //輸出形參的值 } $m = 1; example($m); //傳遞值,將$m的值傳遞給形參$m echo"<p>在函數外 \$m=$m<p>"; //實參的值沒有發生變化,輸出m=1 ?>
運行結果如圖3.14所示。

圖3.14 按值傳遞方式
2.按引用傳遞方式
按引用傳遞就是將實參的內存地址傳遞到形參中。這時,在函數內部的所有操作都會影響到實參的值,返回后,實參的值會發生變化。引用傳遞方式就是傳值時在原基礎上加&即可。
【例3.26】仍然使用例3.25中的代碼,唯一不同的地方就是多了一個&。實例代碼如下:(實例位置:光盤\TM\sl\3\26)
<?php function example(&$m){ //定義一個函數,同時傳遞參數$m的變量 $m = $m * 5 + 10; echo"在函數內:\$m=".$m; //輸出形參的值 } $m = 1; example($m); //傳遞值:將$m的值傳遞給形參$m echo"<p>在函數外:\$m=$m<p>"; //實參的值發生變化,輸出m=15 ?>
運行結果如圖3.15所示。

圖3.15 按引用傳遞方式
3.默認參數(可選參數)方式
還有一種設置參數的方式,即可選參數。可以指定某個參數為可選參數,將可選參數放在參數列表末尾,并且給它指定一個默認值。
【例3.27】本例使用可選參數實現一個簡單的價格計算功能,設置自定義函數values()的參數$tax為可選參數,其默認值為空。第一次調用該函數,并且給參數$tax賦值0.25,輸出價格;第二次調用該函數,不給參數$tax賦值,輸出價格。實例代碼如下:(實例位置:光盤\TM\sl\3\27)
<?php function values($price, $tax=0){ //定義一個函數,其中的一個參數初始值為0 $price=$price+($price*$tax); //聲明一個變量$price,等于兩個參數的運算結果 echo"價格:$price<br>"; //輸出價格 } values(100,0.25); //為可選參數賦值0.25 values(100); //沒有給可選參數賦值 ?>
結果為:價格:125
價格:100
注意
當使用默認參數時,默認參數必須放在非默認參數的右側,否則函數可能出錯。
說明
從PHP 5開始,默認值也可以通過引用傳遞。
3.8.3 從函數中返回值
視頻講解:光盤\TM\lx\3\25 從函數中返回值.mp4
在3.8.1節中介紹了如何定義和調用一個函數,并且講解了如何在函數間傳遞值,本節將講解函數的返回值。通常,函數將返回值傳遞給調用者的方式是使用關鍵字return。
return將函數的值返回給函數的調用者,即將程序控制權返回到調用者的作用域。如果在全局作用域內使用return關鍵字,那么將終止腳本的執行。
【例3.28】本例使用return關鍵字返回一個操作數。先定義函數values(),函數的作用是輸入物品的單價、重量,然后計算總金額,最后輸出商品的價格。實例代碼如下:(實例位置:光盤\TM\sl\3\28)
<?php function values($price, $weight=0.45){ //定義一個函數,函數中的一個參數有默認值 $price=$price+($price*$weight); //計算物品金額 return$price; //返回金額 } echo values(100); //調用函數 ?>
結果為:145
return語句只能返回一個參數,也即只能返回一個值,不能一次返回多個值。如果要返回多個結果,就要在函數中定義一個數組,將返回值存儲在數組中返回。
3.8.4 變量函數
視頻講解:光盤\TM\lx\3\26 變量函數.mp4
PHP支持變量函數。下面通過一個實例來介紹變量函數的具體應用。
【例3.29】本例首先定義3個函數,接著聲明一個變量,通過變量來訪問不同的函數。實例代碼如下:(實例位置:光盤\TM\sl\3\29)
<?php function come(){ //定義come()函數 echo "來了<p>"; } function go($name="jack"){ //定義go()函數 echo $name."走了<p>"; } function back($string) //定義back()函數 { echo "又回來了,$string<p>"; } $func="come"; //聲明一個變量,將變量賦值為come $func(); //使用變量函數來調用函數come() $func="go"; //重新給變量賦值 $func("Tom"); //使用變量函數來調用函數go() $func="back"; //重新給變量賦值 $func("Lily"); //使用變量函數來調用函數back() ?>
運行結果如圖3.16所示。

圖3.16 變量函數
可以看到,函數的調用是通過改變變量名來實現的,通過在變量名后面加上一對小括號,PHP將自動尋找與變量名相同的函數,并且執行它。如果找不到對應的函數,系統將會報錯。這個技術可以用于實現回調函數和函數表等。
- 大學計算機基礎(第三版)
- Twilio Best Practices
- Groovy for Domain:specific Languages(Second Edition)
- jQuery從入門到精通 (軟件開發視頻大講堂)
- 快速念咒:MySQL入門指南與進階實戰
- JAVA程序設計實驗教程
- Creating Stunning Dashboards with QlikView
- Java程序員面試筆試寶典(第2版)
- 實戰Java高并發程序設計(第2版)
- 遠方:兩位持續創業者的點滴思考
- 深入分析GCC
- Microsoft Exchange Server 2016 PowerShell Cookbook(Fourth Edition)
- 你好!Java
- 企業級Java現代化:寫給開發者的云原生簡明指南
- ANSYS FLUENT 16.0超級學習手冊