这样的事情之间有什么区别:
if(isset($variable)) {
do_something();
}
和这个
if($variable) {
do_something();
}
我想说第一种情况,isset检查变量是否存在且不为空。但是,如果将它设置为空数组怎么办?
在第二种情况下,我想说如果变量已经被实例化,它将传递为true。
感谢您今后的任何澄清。
答案 0 :(得分:3)
if(isset($variable))
检查变量是否存在并设置(与NULL不同)。
if($variable)
只检查变量发回的布尔值,在本例中为
if($variable === true)
答案 1 :(得分:1)
Isset是设置或不设置变量的天气条件。这不包括“null”,如手册中所述:
isset - 确定变量是否已设置且不为NULL http://uk1.php.net/manual/en/function.isset.php
$var = null;
if (isset($var)) {
echo 'Hello World';
}
不会输出任何内容,因为null未定义为已设置。
$var = false;
if (isset($var)) {
echo 'Hello World';
}
输出为'Hello World',因为$ var已设置,boolean无关紧要。
$var = null;
if ($var) {
echo 'Hello World';
}
什么都不输出,因为$ var为null,而null不为true。同样如果$ var = false,我认为这是一个给定的。
这适用于动态生成的数组
$array = array('hello' => 'world');
if (isset($array['hello'])) {
echo 'hello is set';
}
if (isset($array['world'])) {
echo 'world is set';
}
只有'你好'设置'会回应。这意味着您可以使用1行显着减少php通知:
$var = isset($_GET['var']) ? trim($_GET['var') : null;
即使某些东西是空的,isset也会返回true,
$array = array();
if (isset($array)) {
echo 'yep, array is set!';
}
所以不要用它来检查空,改为执行empty(),或者在大多数情况下你甚至可以做if($ var),即使对于空数组,空数组= false。
答案 2 :(得分:0)
isset
函数检查是否已定义变量。它在空数组上返回true
。使用empty
检查数组是否为空(如果未定义变量,则返回false)。
简单地调用if($variable)
检查它是否具有true
返回值(尽管不一定是布尔值),如果尚未定义,可能会引发错误。