2012-03-06 155 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(); 

,而不需要一个变量在实际传递给函数所有。