isset()和empty() – 使用什么

可能重复:
为什么要检查isset()和!empty()

你能帮我改进我的编码风格吗?:)在一些任务中,我需要检查 – variables是空的或包含的东西。 为了解决这个任务,我通常做以下的事情。

检查 – 这个variables是否设置? 如果设置 – 我检查 – 它是空的或不是?

<?php $var = '23'; if (isset($var)&&!empty($var)){ echo 'not empty'; }else{ echo 'is not set or empty'; } ?> 

我有一个问题 – 我应该使用空()之前isset() – 是否有必要? TIA!

这取决于你正在寻找什么,如果你只是想看看它是否是空的只是使用empty因为它检查是否设置好,如果你想知道是否设置或不使用isset

Empty检查是否设置了variables,如果是,则检查是否为空,“”,0等

Isset只是检查是否设置,它可以是任何不为null

empty ,下面的东西被认为是空的:

  • “”(一个空string)
  • 0(0作为整数)
  • 0.0(0作为浮点数)
  • “0”(0作为一个string)
  • 空值
  • 数组()(一个空的数组)
  • var $ var; (一个variables声明,但没有一个类的值)

http://php.net/manual/en/function.empty.php


正如评论中所提到的,缺less警告对于空()

PHP手册说

empty()是(boolean)var的反义词,除了没有设置variables时不会产生警告

关于isset

PHP手册说

如果testing已经设置为NULL的variables,isset()将返回FALSE


你的代码会很好,如下所示:

 <?php $var = '23'; if (!empty($var)){ echo 'not empty'; }else{ echo 'is not set or empty'; } ?> 

例如:

 $var = ""; if(empty($var)) // true because "" is considered empty {...} if(isset($var)) //true because var is set {...} if(empty($otherVar)) //true because $otherVar is null {...} if(isset($otherVar)) //false because $otherVar is not set {...} 

在你的具体情况: if ($var)

如果你不知道variables是否存在,你需要使用isset 。 既然你在第一行中声明了它,你知道它是存在的,所以你不需要,不应该使用isset

empty也是一样,只有empty也结合了对价值真实性的检查。 empty相当于!isset($var) || !$var !isset($var) || !$var!empty相当于isset($var) && $varisset($var) && $var == true

如果你只想testing一个真实 存在的variables, if ($var)是完全适合的话。

您可以使用empty() – 如文档中所示 ,如果variables没有值,它将返回false。

在同一页上的一个例子:

 <?php $var = 0; // Evaluates to true because $var is empty if (empty($var)) { echo '$var is either 0, empty, or not set at all'; } // Evaluates as true because $var is set if (isset($var)) { echo '$var is set even though it is empty'; } ?> 

如果你只是想知道它是不是NULL,你可以使用isset。 否则,它似乎是空的()只是单独使用。

如果未设置var,则返回true。 但即使var不为空,isset也会返回true。

下面是isset()empty()对4种可能性的输出:未声明,null,false和true。

 $a=null; $b=false; $c=true; var_dump(array(isset($z1),isset($a),isset($b),isset($c)),true); //$z1 previously undeclared var_dump(array(empty($z2),empty($a),empty($b),empty($c)),true); //$z2 previously undeclared //array(4) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(true) [3]=> bool(true) } //array(4) { [0]=> bool(true) [1]=> bool(true) [2]=> bool(true) [3]=> bool(false) } 

你会注意到, 除了 case $b=false 之外 ,所有'isset'结果都与'empty'结果相反。 所有的值(除了不是一个值,但是一个非值的空值除外)评估为false时将返回true,当通过issettesting时返回true,当通过'empty'testing时返回false。

所以当你担心variables的存在时,使用isset() 。 当你testing真或假时使用empty 。 如果实际的空虚types很重要,请使用is_null===0===false===''

 $var = 'abcdef'; if(isset($var)) { if (strlen($var) > 0); { //do something, string length greater than zero } else { //do something else, string length 0 or less } } 

这是一个简单的例子。 希望它有帮助。

编辑:在事件中没有定义variables时添加了isset ,这会导致错误,检查它的第一个集合是否会帮助删除一些头痛的道路。