官术网_书友最值得收藏!

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將自動尋找與變量名相同的函數,并且執行它。如果找不到對應的函數,系統將會報錯。這個技術可以用于實現回調函數和函數表等。

主站蜘蛛池模板: 南平市| 当涂县| 江口县| 峨眉山市| 长武县| 柘城县| 佛冈县| 密山市| 河北省| 贡嘎县| 南安市| 奈曼旗| 岗巴县| 沂南县| 呼伦贝尔市| 花莲县| 吴旗县| 沂源县| 金堂县| 隆尧县| 祁连县| 西华县| 剑川县| 辽阳市| 汉川市| 灵丘县| 龙岩市| 宁国市| 丹江口市| 景谷| 馆陶县| 宜丰县| 海宁市| 浙江省| 讷河市| 汕尾市| 凤山县| 宜城市| 营山县| 曲阜市| 高淳县|