在php函數中,函數的參數才是決定如何成功應用一個函數或是控制一個函數執行行為的標準。 參輸的設定和應用會有多種方式,學會宣告具有不同參數的函數,以及可以成功呼叫各種形式參輸的函數,是學習函數的關鍵。前面介紹如何宣告及應用各種形式的php函數。本節將根據函數參數的特點,介紹其中的兩個參數類型:常規參數函數和偽類型參數函數。
php常規參數函數
常規參數函數,就是實參和形參應該個數相等、型別一致,就像C 語言或JAVA 等強型別語言中的參數使用方法一樣。 這類函數的呼叫比較容易,因為彈性不大,像強類語言一樣要求比較嚴格(參數個數是固定的,每個參數的型別也是固定的)。
常規參數的函數格式說明類似如下的形式:
example(name, age, height) // 常规参数的函数格式
在php中,如果宣告這樣的函數就發揮不了PHP作為弱型別語言的優勢。例如,在上面的常規參數的函數語法格式範例中,宣告一個名為 example 的函數,函數執行後傳回字串類型的值。此函數有三個參數,呼叫時傳遞的參數個數和順序必須一致,且第一個參數必須是字串類型,第二個參數必須是整數,第三個參數必須是雙精確度類型。例如,在自訂函數中求兩個整數的平方和函數就是一個常規參數的函數,要求必須有兩個整數的參數。系統函數也有很多是這種類型,一些使用常規參數的系統函數如下:
string chr(int ascii) // 必须使用一个整数作为参数 float ceil(float value) // 必须使用一个浮点数作为参数 array array_combine(array keys, array values) // 必须使用两个数组作为参数 int strnatcmp (string str1, string str2) // 必须使用两个字符串作为参数 string implode(string glue, array pieces) // 第一个参数必须是字符串,第二个参数必须是数组 string readdir(resource dir_handle) // 必须使用一个资源类型作为参数
#php偽類型參數的函數
##PHP是弱類型的語言,不僅在宣告變數時不需要指定類型,在宣告函數時參數也不需要指定類型,所以在PHP中函數的每個參數都可以為其傳遞任意類型的值。因為弱型別是 PHP 語言最大的特點,在宣告一個函數時,可以讓同一個參數接受任意型別的值。而在 C 或 JAVA 等強型別程式語言中,如果要宣告對陣列進行排序的方法,就必須為每一種類型的陣列寫一個排序的方法,這就是所謂的函數重載。而PHP 這類弱型參數則不存在重載的概念。在PHP中,如果對各種類型的陣列進行排序,只要聲明一個函數就夠了,所以偽類型參數的函數是PHP中最常見的函數應用形式。 偽類型參數的函數格式說明類似如下:mixed funName (mixed $args) // 在参数列表中出现类型使用 mixed 描述的参数 number funName (number $args) // 在参数列表中出现类型使用 number 描述的参数
mixed、number 和 callback 三種。在宣告函數時,如果參數能夠接受多種不同但並不必須是所有類型的值,在函數的說明文件中就可以使用 mixed 標記這個參數類型。如果說明一個參數可以是 整數或浮點型,就可以使用 number 標示參數。除了參數可以傳遞偽類型的參數,函數的傳回值也可以根據參數類型的不同傳回不同類型的值,像是 empty()、pow()等都是這樣的函數。
例如call_user_func()函數就可接收使用者自訂的函數作為一個參數,它是php的內建函數。 callback函數不但可以是一個函數,也可以是一個物件的方法,靜態類別的方法也可以。一個php函數用函數名稱字串來傳遞,可以傳遞任何內建的或使用者自訂的函數。
下面來一個簡單的實例:
<?php $data = array("name"=>"callback" , "value"=>"test"); $rs1 = http_build_query($data); //直接调用php函数 $rs2 = call_user_func("http_build_query",$data); //使用回调函数 echo $rs1; //name=callback&value=test echo "<br />"; echo $rs2; //name=callback&value=test ?>
php.cn獨孤九賤(4)-php影片教學》
2. 3.以上是php函數之常規參數函數與偽類型參數函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!