變數函數
在 php 中是支援變數函數的,首先定義一些函數,再聲明一個變數,使用變數來調用不同的函數,然後不斷地重新給變數賦值。下面我們將通過一個執行個體來介紹變數函數的具體使用方法。在這個例子中首先定義3個函數,接著聲明一個變數並賦值,通過變數函數來訪問不同的3個函數,需要重新不斷地給變數賦值。
其樣本的代碼如下所示:
<?php function come(){ echo "進門了<br>"; } function go($name="tom"){ echo "$name 出門了<br>"; } function back($str){ echo "重新進門 $str<br>"; } $func = "come"; //聲明一個變數並賦值 $func(); //使用變數函數來調用函數come() $func = "go"; //重新給變數賦值 $func("jane"); //使用變數函數來調用函數go() $func = "back"; //重新給變數賦值 $func("jack"); //使用變數函數來調用函數back()?>
運行結果如下所示:
說明:可以看到,變數函數的調用時通過改變變數名來實現的,通過在變數名後面加上一對小括弧,php將自動尋找與變數名相同的函數,並執行它。如果找不到對應的函數,系統將會報錯。這項技術可以用於實現回呼函數和函數表等等。
函數的引用
函數間參數的傳遞中的按引用傳遞的方式可以修改實參的內容。引用不僅可以用於普通變數、函數的參數,可也以用於函數本身。對函數的引用,就是對函數返回結果的引用。
下面我們將通過一個執行個體來說明,實現定義一個函數,這裡需要在函數名前加上 “ & ” 符,接著,變數$str 將引用該函數,最後輸出該變數$str, 實際上就是 $tmp的值。
執行個體代碼如下所示:
<?php function &test($tmp=0){ //定義一個函數,加 & 符號 return $tmp; //返回參數 $tmp } $str = &test("hello word"); //聲明一個函數的引用$str echo $str; //輸出$str?>
輸出結果為 : hello word
注意:和參數傳遞不同,對函數的引用必須在兩個地方都使用 “ & ” 符,用來說明返回的是一個引用。
取值 (Dereference)
當在實際操作中不需要引用時,可以取消參數的引用傳遞方式的引用,只需要使用PHP函數即可,這裡取值 (Dereference)使用 unset() 函數,它只是斷開了變數名和變數內容之間的綁定,而不是銷毀變數內容。
下面通過一個執行個體來說明,首先聲明一個變數和一個變數引用,輸出引用後取值 (Dereference),再次調用引用和原變數。可以看到,取值 (Dereference)後對原變數沒有任何影響。
執行個體代碼如下所示:
<?php $num = 123; $math = &$num; echo "\$math is: ".$math . "<br>"; unset($math); echo "\$math is: ".$math . "<br>"; echo "\$num is: " .$num;?>
運行結果為:
$math is: 123$math is: $num is: 123