PHP 函數的寫法
function 函數名稱(參數1, 參數2, 參數3, ...)
{
:
函數內容
:
return 回傳值 //可以省略
}
函數可以設定預設參數值,當呼叫時沒有輸入參數,會以預設參數值來執行
function sum_them( $a = 1, $b =2)
{
$sum = $a + $b;
return $sum;
}
如果呼叫 sum_them( 6, 4 ) 會得到 10
如果直接呼叫 sum_them() 會得到 3
使用函式外的變數
範例:
function sum_this($a)
{
$b = 20;
$sum = $a + $b;
return $sum;
}
$b = 30; //不會影響到函式內的$b
sum_this(10); //得到答案 30 而不是 40
如果想用函式外的變數,必須使用global
function sum_this($a)
{
global $b;
$sum = $a + $b;
return $sum;
}
$b = 30;
sum_this(10); //函式會使用外部的 $b 得到答案40
也可以直接呼叫$GLOBALS陣列裡面的值來代替
function sum_this($a)
{
$sum = $a + $GLOBALS['b'];
return $sum;
}
會得到一樣的結果
函式內的值會在每一次函式結束後釋放,所以每一次函式呼叫結果不會累積。
function sum()
{
$sum = 10;
$sum += 1;
return $sum;
}
echo sum();
echo sum();
會得到兩次同樣的結果 11。
如果想要保留每一次函式內變數的變更,可以使用static
function sum()
{
static $sum = 10;
$sum += 1;
return $sum;
}
echo sum();
echo sum();
第一次會得到11,第二次由於sum保留上次結果,所以會得到12
函式一般採用傳值的方式,所以不會改變到輸入的值。
function change($a)
{
$a = 10;
return $a;
}
$b = 1;
echo change($b) . "->" . $b;
//上述的結果會得到 10 -> 1 , $b 並不會受到函式改變。
如果想要 $b 跟著函式一起被變動,可以採用傳址的方式。
function change(&$a)
{
$a = 10;
return $a;
}
$b = 1;
echo change($b) . "->" . $b;
//上述的結果會得到 10 -> 10 , $b 跟著一起被變動了。
沒有留言:
張貼留言