定义PHP中不存在某个值的最佳方法是什么,或者不足以满足应用程序的需要。
$var = NULL
,$var = array()
,$var = FALSE
?
最好的测试方法是什么?
isset($var)
,empty($var)
,if($var != NULL)
,if($var)
?
将变量初始化为它们将是什么,例如NULL
如果字符串array()
,如果它们是数组,则具有一些好处,因为它们将在它们所处的设置中起作用而没有任何意外结果。
e.g。 foreach($emptyArray)
不会抱怨它不会输出任何内容,而foreach($false)
会抱怨错误的变量类型。
但它有点不必要的麻烦,有很多不同的方式做基本相同的事情。例如。 if(empty($var))
或if ($var == NULL)
<小时/> 重复: Best way to test for a variable’s existence in PHP; isset() is clearly broken
答案 0 :(得分:8)
您命名的每个函数用于不同目的,应相应地使用它们:
有用的链接是if($var)。
判断变量是否适合您正在编码的脚本的方法将完全取决于您的代码,因此无法单独检查它。
最后一条建议:如果您希望变量是一个数组,请不要等待它在某处设置。相反,事先初始化它,然后让你的代码运行,也许它会被新数组覆盖:
// Initialize the variable, so we always get an array in this variable without worrying about other code.
$var = array();
if(some_weird_condition){
$var = array(1, 2, 3);
}
// Will work every time.
foreach($var as $key => $value){
}
答案 1 :(得分:1)
要记住的另一件事是,由于php在允许评估为NULL或为空的情况下是自由的,因此必须使用身份运算符(===,!== see http://php.net/operators.comparison。这就是原因为什么所有这些比较和相等函数都存在,因为你经常需要区分具有细微差别的值。
如果明确检查NULL,请始终使用$ var === NULL
答案 2 :(得分:-1)
我的投票取决于unset(),因为非现有变量在使用时应该生成通知。
测试变得有点复杂,因为如果变量“不存在”或null,则isset()将为false。 (如果你问我,语言设计就会变弱)
你可以在$ GLOBALS,$ _POST等中使用array_key_exists()作为valiables。
对于类属性,有property_exists()。