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) && $var
或isset($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,当通过isset
testing时返回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
,这会导致错误,检查它的第一个集合是否会帮助删除一些头痛的道路。