检测PHP变量不足:FALSE vs NULL vs unset()vs empty()?

Fir*_*row 1 php

定义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)


重复: 在PHP中测试变量存在的最佳方法; isset()显然已被打破

Seb*_*Seb 8

您命名的每个函数都用于不同的目的,应该相应地使用它们:

  • empty:告诉现有变量是否具有可被视为空的值(数字为0,数组为空数组,等于NULL等).
  • isset($ var):告诉脚本在变量是赋值的左侧(即$ var = 3;)之前是否遇到一行,或者是其他任何模糊的方法,如 extract, list eval.这是查找是否已设置变量方法.
  • $ var == NULL:这很棘手,因为0 == NULL.如果你真的想知道变量是否为NULL,你应该使用triple =:$ var === NULL.
  • if($ var):与$ var == NULL相同.

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

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

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

// 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){
}
Run Code Online (Sandbox Code Playgroud)