检测到PHP变量不足:FALSE vs NULL vs unset()vs empty()?
定义值在PHP中不存在或不足以满足应用程序需要的最佳方法是什么检测到PHP变量不足:FALSE vs NULL vs unset()vs empty()?,php,Php,定义值在PHP中不存在或不足以满足应用程序需要的最佳方法是什么 $var=NULL,$var=array(),$var=FALSE 最好的测试方法是什么 isset($var),空($var),如果($var!=NULL),如果($var) 按原样初始化变量,例如NULL如果是字符串,array()如果是数组,则具有一些好处,因为它们将在所需的设置中运行,而不会产生任何意外结果 e、 g.foreach($emptyArray)不会抱怨它不会输出任何东西,而foreach($false)会抱怨变
$var=NULL
,$var=array()
,$var=FALSE
最好的测试方法是什么
isset($var)
,空($var)
,如果($var!=NULL)
,如果($var)
按原样初始化变量,例如NULL
如果是字符串,array()
如果是数组,则具有一些好处,因为它们将在所需的设置中运行,而不会产生任何意外结果
e、 g.foreach($emptyArray)
不会抱怨它不会输出任何东西,而foreach($false)
会抱怨变量类型错误
但是,有这么多不同的方法来做基本上相同的事情,这就像是一个不必要的麻烦。例如,if(空($var))
或if($var==NULL)
复制:我的投票选择unset(),因为不存在的变量在使用时会生成通知 测试变得有点复杂,因为如果变量为“notexistings”或null,isset()将为false。(如果你问我的话) 对于$GLOBALS、$\u POST等中的有效值,您可以使用array_key_exists()。
对于类属性,有属性_exists()。我的投票选择unset(),因为不存在的变量在使用时会生成通知 测试变得有点复杂,因为如果变量为“notexistings”或null,isset()将为false。(如果你问我的话) 对于$GLOBALS、$\u POST等中的有效值,您可以使用array_key_exists()。
对于类属性,有property_exists()。您命名的每个函数都有不同的用途,应该相应地使用它们:
- :说明现有变量的值是否为空(0表示数字,空数组表示数组,等于NULL,等等)
- :告诉脚本是否在变量位于赋值左侧(即$var=3;)之前遇到一行,或者任何其他模糊的方法,例如,或。这是查找是否已设置变量的方法
- :这很棘手,因为0==NULL。如果您真的想知道变量是否为NULL,那么应该使用triple=:$var===NULL
- :与$var==NULL相同
// 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){
}
您命名的每个函数都有不同的用途,应相应地使用它们:
- :说明现有变量的值是否为空(0表示数字,空数组表示数组,等于NULL,等等)
- :告诉脚本是否在变量位于赋值左侧(即$var=3;)之前遇到一行,或者任何其他模糊的方法,例如,或。这是查找是否已设置变量的方法
- :这很棘手,因为0==NULL。如果您真的想知道变量是否为NULL,那么应该使用triple=:$var===NULL
- :与$var==NULL相同
// 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){
}
另一件需要记住的事情是,由于php允许计算为NULL或空,因此有必要使用标识运算符(==,!==请参见)。这就是为什么所有这些比较和相等函数都存在的原因,因为您经常需要区分具有细微差异的值
如果要显式检查NULL,请始终使用$var===NULL另一件要记住的事情是,由于php允许计算为NULL或空,因此有必要使用标识运算符(==,!==请参阅。这就是为什么所有这些比较和相等函数都存在的原因,因为您经常需要区分具有细微差异的值
如果要显式检查NULL,请始终使用$var==NULL我不同意,那篇文章没有提到empty()或使用FALSE,也没有提到根据预期用途初始化变量的优点。我不同意,那篇文章没有提到empty()或者使用FALSE,但没有提到根据预期用途初始化变量的优点。一些小的更正:每当变量为FALSE时,empty()也将返回true(不仅是空字符串或空数组);isset()并不完全查找变量赋值,因为变量可以用其他方式设置(提取等);如果($var)在$var既不为NULL、FALSE也不为0时返回true…谢谢!在答案中添加了部分文本。顺便说一句,如果($var)我说它与$var==NULL相同,则在您列出的情况下(NULL、FALSE和0)返回true。一些小的更正:只要变量为FALSE(不仅是空字符串或空数组),empty()也将返回true;isset()并不完全查找变量赋值,因为变量可以通过其他方式设置(提取等);如果($var)在$var既不是NULL、FALSE也不是0时返回true…谢谢!添加了部分tex