我有这段代码:
$myVariable = someRanDomFunction($blah)
问题是someRanDomFunction()
可能返回数组,对象,空数组,布尔值或NULL。
检查$myVariable
是否包含某些数据的最佳方式会怎样?
现在我正在这样做:
!empty($myVariable )
它会涵盖所有案件吗?
或者我应该($myVariable != NULL && !empty($myVariable ))
?
UPDATE *
“某些数据”我的意思是TRUE
,如果它的bool,非空数组,以及除NULL以外的任何值
答案 0 :(得分:2)
var_dump(empty(NULL)); // returns bool(true)
空了就够了。如果你说布尔值没有数据,也请检查!is_bool。 (empty(false)
也会返回true
)
或者更好,仅使用if ($result)
;这应该足够了。
或者您称之为“某些数据”?
更新:你需要什么:
php>的var_dump(空([])!);
布尔(假)
php>的var_dump(空( “”)!);
布尔(假)
php>的var_dump(空(假)!);
布尔(假)
php>的var_dump(空(真)!);
BOOL(真)
php>的var_dump(空(NULL)!);
布尔(假)
答案 1 :(得分:1)
简单地执行隐式布尔检查将排除false
,array()
和null
。
if ($myVariable) {
//will execute as long as myVariable isn't an empty array, false, null, or 0 / '0'
}
!empty()
做了完全相同的事情,添加了对未定义变量/数组索引的警告的抑制。不过,这有点啰嗦。
答案 2 :(得分:0)
如果您检查空,则需要使用!==
(严格检查http://php.net/manual/en/language.operators.comparison.php)
答案 3 :(得分:0)
如果你的someRanDomFunction可能返回一个数组,对象,bool或null,这是不好的方法。逻辑错了。
但是,您可能使用 OR (||)运算符,而不是AND。
($myVariable != NULL || !empty($myVariable) || $myVariable == false)
答案 4 :(得分:0)
如果您预先预计某些特定数据,最好明确检查一下。 PHP有很多功能,所以它们以is_
基本上空是检查null,所以你的第二种方式是多余的。 您也可以使用isset
答案 5 :(得分:0)
如果数组,对象和布尔值true是数据AND其余:空数组,布尔值false或NULL,不是“数据”。
那么解决方案就是这个:
$myVariable = someRanDomFunction($blah);
if(!empty($myVariable)) {
//...
}