« 45. 什麼是 call by reference | (回到Blog入口) | 47. 如何設計可變長度參數的函數? »

46. 自訂函數的參數預設值

jollen 發表於 October 27, 2006 3:57 PM

在設計函數時,為了避免呼叫函數時沒有傳入參數值,因此我們可以替函數的參數加上預設值,例如:

<?php function add($x = 0, $y = 0) { return $x+$y; }
echo add(); ?>

因為呼叫 add() 時沒有傳入值,因此最後的輸出結果為:

0

呼叫函數時,如果沒有加上傳入值,則使用預設值。重要的是,如果只為某些參數加上預設值,加上預設值的參數必須全部靠右:

<?php function add($x, $y = 1, $z = 2) { return $x+$y+$z; }
echo add(5); ?>

結果:

8

底下都是錯誤的寫法:

unction add($x = 1, $y, $z = 2) { return $x+$y+$z; }
function add($x = 1, $y = 2, $z) { return $x+$y+$z; }

這是因為函數是由左而右存放傳入值的關係,錯誤的寫法會導致 PHP 認為傳入的參數不足的錯誤,例如:

function add($x = 1, $y = 2, $z) { return $x+$y+$z; }
echo add(10);

此時,$x = 10,不使用預設值,但因為沒有傳入值給 $z,所以會產生錯誤。

--jollen

版權聲明

請參閱頁面底部的 CC 授權條款。此外,Jollen's PHP 專欄禁止引用、修改與轉貼,如果您想與朋友分享的話,我們只允許網站連結(hyperlink)的形式。

發表一個評論

(如果你此前從未在此 Blog 上發表過評論,則你的評論必須在 Blog 主人驗證後才能顯示,請你耐心等候。)

| Top | Jollen's Forum |
Jollen's PHP 專欄採用 Attribution-NonCommercial-NoDerivs 2.5 授權條款
Copyright(c) 2001-2007,2010 www.jollen.org