首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测不到足够的PHP变量: FALSE与unset() vs空()?

检测不到足够的PHP变量: FALSE与unset() vs空()?
EN

Stack Overflow用户
提问于 2009-03-21 15:44:29
回答 3查看 1.9K关注 0票数 1

定义PHP中不存在或不足以满足应用程序需要的值的最佳方法是什么。

$var = NULL$var = array()$var = FALSE

最好的测试方法是什么?

isset($var)empty($var)if($var != NULL)if($var)

将变量初始化为它们,例如,如果字符串为NULL,如果它们是数组,则使用array(),因为它们将在设置中发挥作用,而不会产生任何意外的结果。

例如,foreach($emptyArray)不会抱怨它不会输出任何东西,而foreach($false)会抱怨错误的变量类型。

但是,有这么多不同的方法来做同样的事情,就像不必要的麻烦。例如:if(empty($var))if ($var == NULL)

Duplicate:在PHP中测试变量是否存在的最佳方法;isset()显然已损坏

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-21 17:07:06

您命名的每个函数都有不同的用途,因此应该使用它们:

  • 空的:告诉现有变量的值是否为空(数字为0,数组为空,等于NULL,等等)。
  • isset($var):告诉脚本在变量是赋值的左边(即$var = 3;)或任何其他模糊方法(如提取列表评估 )之前是否遇到了一行。这是查找是否设置了变量的方法。
  • $var ==空:这很棘手,因为0 ==为NULL。如果您真的想知道一个变量是否为NULL,那么应该使用$var =:=== NULL。
  • if($var):与$var == NULL相同。

http://us2.php.net/manual/en/types.comparisons.php是一个有用的链接。

判断变量是否适合您正在编写的脚本的方法将完全取决于您的代码,因此没有单一的方法来检查它。

最后一条建议:如果您希望变量是一个数组,不要等到某个地方设置它。相反,先初始化它,然后让您的代码运行,也许它会被一个新数组覆盖:

代码语言:javascript
复制
// 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){
}
票数 8
EN

Stack Overflow用户

发布于 2009-03-21 17:08:54

另外要记住的是,由于php允许计算值为空或空,所以必须使用标识操作符(===,!==,请参阅http://php.net/operators.comparison )。这就是为什么所有这些比较和相等函数都存在的原因,因为您通常必须区分具有细微差异的值。

如果要显式检查NULL,请始终使用$var === NULL。

票数 1
EN

Stack Overflow用户

发布于 2009-03-21 16:05:43

我的投票结果是unset(),因为没有存在的变量在使用时应该生成一个通知。

测试变得更加复杂,因为如果变量“不存在”或null,isset()将是false。(语言设计缺陷,如果你问我的话)

您可以使用array_key_exists()作为$GLOBALS、$_POST等中的可验证性。

对于类属性,有property_exists()。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/669488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档