2012-07-13 61 views
13

我也很困惑如何从函数返回时检查变量是否为false/null。PHP检查是否为假

何时使用empty()以及何时使用isset()检查条件?

回答

7

对于函数返回,您既不使用isset也不使用empty,因为这些函数仅适用于变量,并且仅用于测试可能不存在的变量而不触发错误。

对于函数返回检查变量的存在是没有意义的,所以才这样做:

if (!my_function()) { 
    // function returned a falsey value 
} 

为了更详细地了解这一点,看到The Definitive Guide To PHP's isset And empty

+0

我实际上试图捕捉一个返回数组或错误,并试图进一步确定要做什么 – 2012-07-13 08:18:18

+3

行吗?所以'$ return = myfunction();如果(!$ return){//'是错误的! }' – deceze 2012-07-13 08:20:15

+0

是的,先生....:) :) – 2012-07-13 08:32:16

1

ISSET检查变量是否已设置,换句话说,它检查变量是否是除NULLnot assigned a value之外的任何值。如果变量存在并且具有非NULL值,ISSET将返回TRUE。这意味着分配了“”,0,“0”或FALSE的变量已设置,因此ISSET为TRUE。

EMPTY检查变量是否为空。空被解释为:“”(一个空字符串),0(0作为一个整数),0.0(0作为一个float),“0”(0作为一个字符串),NULL,FALSE,array() )和“$ var;” (变量声明,但没有在一个类中的值

+0

变量不能有分配的值。该值至少为null。 – deceze 2012-07-13 05:56:51

4

isset()函数检查一个变量具有一个值,包括(假,0或空字符串),但不是NULL 返回TRUE,如果变种存在; FALSE否则。

在另一方面空()函数检查如果变量具有空值空字符串,0,NULL,或假。如果变种具有非空和非零值。

返回FALSE
0
  • check false:if($ v === false)
  • check null:if(is_null($ v))

空()是一个evil.It是缓慢的,而当$ V queals 假,0,0,阵列() '',它将返回true.if你需要这种检查,如果($ v),则可以使用

+3

'空'不是邪恶的,你根本不明白它的用例。我可以指导您[PHP的isset和空的权威指南](http://kunststube.net/isset/)? – deceze 2012-07-13 05:43:59

+1

谢谢你的教学! – Allen 2012-07-13 05:46:58

6

检查变量(举几个例子)

if(is_null($x) === true) // null 
if($x === null) // null 
if($x === false) 
if(isset($x) === false) // variable undefined or null 
if(empty($x) === true) // check if variable is empty (length of 0) 
0

isset - 检测如果一个变量被设定,没有NULL

$a = "test"; 
$b = "anothertest"; 

var_dump(isset($a));  // TRUE 
var_dump(isset($a, $b)); // TRUE 

unset ($a); 

var_dump(isset($a));  // 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'; 
} 
?>