2013年3月8日 星期五

PHP 函數介紹

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 跟著一起被變動了。











沒有留言:

張貼留言