2012-03-06 62 views
0

我今天看到一些PHP我不明白,有誰能解釋給我看?

function my_func($param='') 
{ 

    if (empty($param)) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

我不明白的是$ param變量被分配一個空字符串,但不知是在函數內部不是空的嗎?這只是一個默認值?

+3

PHP函數文檔背後:默認參數值(HTTP:/ /us2.php.net/manual/en/functions.arguments.php#functions.arguments.default) – Wiseguy 2012-03-06 14:26:46

+0

[PHP function with unlimited number of parameters]的可能重複(http://stackoverflow.com/questions/1577383/p hp-function-with-unlimited-number-of-parameters) – 2012-03-06 14:30:34

+0

@Shiplu我不同意。這個問題有點不同,它沒有引用默認參數值。 – Wiseguy 2012-03-06 14:34:30

回答

2
my_func("string") //makes $param "string" 

my_func() //picks default making $param '' 

您可以有必需和可選PARAMS像

function my_func($param1, $param2='default') 

你不能把可選PARAMS所需的PARAMS

function my_func($param1='', $param2) //gives errors. 
1

是的,您可以在PHP中爲param分配默認值。例如,您可以使用my_func(「無空字符串」)覆蓋它!

1

你的假設是正確的;這允許開發人員爲參數分配默認值。

如果調用代碼未傳遞參數值,則該函數返回false。否則,$param非空,並且該函數返回true。

這段代碼有一個潛在的缺陷,就是一個參數被一個空值(0,null等)傳遞的情況。即使參數已通過,代碼將返回false

1

是,函數聲明的括號裏面的變量是一個默認值,並因此可以使用這樣調用該函數:

echo my_func(); 

,而不需要一個變量在實際傳遞給函數所有。