PHP中函數無需在調用之前被定義;
PHP 中的所有函數和類別都具有全局作用域,可以定義在一個函數之內而在之外調用,反之亦然;
PHP 不支援函數重載,也不可能取消定義或重定義已宣告的函數;
在PHP 中可以呼叫遞歸函數。但要避免遞歸函數/方法呼叫超過 100-200 層,因為可能會使堆疊崩潰從而使目前腳本終止。
函數的定義:
function 函數名稱([參數列表]){
函數體傳遞參考(該方式可以在函數體改變傳入的參數值)
如:
function fun(&$var){
$var; $var = 0;
fun($var);
echo $var;
輸出1;
PHP支持默認參數值。
如:
function fun($var1,$var2=2,$var3=3){
return $var1+$var2+$var3;{
return $var1+$var2+$var3;{
return $var1+$var2+$var3; ;echo fun(1,1);echo fun(1,1,2);
將分別輸出6 5 4
注意:任何預設參數必須放在任何非預設參數的右側側;否則,函數將不會按照預期的情況工作。
如將上述函數改為:
function fun($var2=2,$var3=3,$var1){
return $var1+$var2+$3; );echo fun(1,1);
echo fun(1,1,2);
上述除了第三種調用方式能正常執行外,前兩種都會出現問題。
PHP支援可變數量的參數清單。
在PHP5.6之前,取得參數的資訊需要用到func_num_args()得到參數的數目,func_get_arg(i)取得第i個參數的值;
如:
){
$len = func_num_args();
$res = 0;for($i = 0; $i
for($i = 0; $i i);
}
return $res;}
在PHP5.6中引入了...$args的方式,
在PHP5.6中引入了...$args的方式, ..$args){
$res = 0;
foreach ($args as $val){
$res += $val;
}
$res += $val;
}$res += $val;
}
}
兩種方式的結果都是一樣的。
PHP中可變函數的概念
即如果一個變數名後有圓括號,PHP 將尋找與變數的值同名的函數,並且嘗試執行它。可變函數可以用來實現包括回調函數,函數表在內的一些用途。
例:
function fun(){
echo "Hello";}$var = "fun";echo "Hello";}
$var
PHP中的匿名函數
匿名函數(Anonymous functions),也稱為閉包函數(
closures),允許暫時建立一個沒有指定名稱的函數。最常用作回呼函數(callback)參數的值。
也可以將匿名函數透過賦值的方式指定其函數名,如:
$fun = function (){
echo "H};
以上就介紹了php(4)-函數,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。