0

我有这个代码:

$myVariable = someRanDomFunction($blah)

问题是它someRanDomFunction()可能返回一个数组、一个对象、一个空数组、布尔值或 NULL。

如果最好的检查方法$myVariable有一些数据怎么办?

现在我正在这样做:

!empty($myVariable )

它会涵盖所有情况吗?或者我应该这样做($myVariable != NULL && !empty($myVariable ))

更新*

“一些数据”是指TRUE如果它的布尔值,不是空数组,以及除 NULL 以外的任何值

4

6 回答 6

2
var_dump(empty(NULL)); // returns bool(true)

空就够了。如果您说布尔值没有数据,请检查 !is_bool。(empty(false)也返回true

或者更好,只使用if ($result); 这应该足够了。

或者你称之为“一些数据”?

更新:你需要什么:

php > var_dump(!empty([]));

布尔(假)

php > var_dump(!empty(""));

布尔(假)

php > var_dump(!empty(false));

布尔(假)

php > var_dump(!empty(true));

布尔(真)

php > var_dump(!empty(null));

布尔(假)

于 2013-04-08T20:30:57.417 回答
1

简单地进行隐式布尔检查将排除false,array()null.

if ($myVariable) {
    //will execute as long as myVariable isn't an empty array, false, null, or 0 / '0'
}

!empty()做同样的事情,增加了关于未定义变量/数组索引的警告的抑制。不过,它有点措辞。

于 2013-04-08T20:33:20.403 回答
0

如果检查null,则需要使用!==(严格检查http://php.net/manual/en/language.operators.comparison.php

于 2013-04-08T20:33:44.423 回答
0

如果您的 someRanDomFunction 可能返回一个数组、对象、布尔值或 null,那么这是不好的方法。逻辑有问题。

但是,您可以使用OR (||) 运算符,而不是 AND。

($myVariable != NULL || !empty($myVariable) || $myVariable == false)
于 2013-04-08T20:33:56.843 回答
0

如果您事先期望一些特定的数据,最好明确地检查它。PHP 有很多函数要做,所以它们从is_

基本上空是检查空值,所以你的第二种方法是多余的。你也可以使用 isset

于 2013-04-08T20:34:43.160 回答
0

如果数组、对象和布尔值 true 是数据 AND 其余:空数组、布尔值 false 或 NULL,则不是“数据”。

那么解决方案就是这个:

$myVariable = someRanDomFunction($blah);

if(!empty($myVariable)) {
//...
}
于 2013-04-08T20:41:50.067 回答