PHP检查有效的函数返回

PHP检查有效的函数返回,php,function,return,Php,Function,Return,我有以下代码: $myVariable=someRanDomFunction($blah) 问题是someRanDomFunction()可能返回数组、对象、空数组、布尔值或NULL 如果检查$myVariable是否包含某些数据的最佳方法是什么 现在我正在这样做: !空($myVariable) 它能涵盖所有情况吗? 或者我应该做($myVariable!=NULL&&!empty($myVariable)) 更新* “some data”指的是TRUE如果它是bool,而不是空数组,以及除N

我有以下代码:

$myVariable=someRanDomFunction($blah)

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

如果检查
$myVariable
是否包含某些数据的最佳方法是什么

现在我正在这样做:

!空($myVariable)

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

更新*

“some data”指的是
TRUE
如果它是bool,而不是空数组,以及除NULL以外的任何值

var_dump(empty(NULL)); // returns bool(true)
空的就够了。如果您说布尔值没有数据,请检查!是乌布尔。(
empty(false)
还返回
true

如果($result),则最好只使用
;这应该足够了

或者你把什么叫做“一些数据”

更新:您需要什么:

php>var_dump(!empty([])

布尔(假)

php>var_dump(!empty(“”)

布尔(假)

php>var_dump(!empty(false))

布尔(假)

php>var_dump(!empty(true))

布尔(真)

php>var_dump(!empty(null))

布尔(假)

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

如果($result)
,则最好只使用
;这应该足够了

或者你把什么叫做“一些数据”

更新:您需要什么:

php>var_dump(!empty([])

布尔(假)

php>var_dump(!empty(“”)

布尔(假)

php>var_dump(!empty(false))

布尔(假)

php>var_dump(!empty(true))

布尔(真)

php>var_dump(!empty(null))

布尔(假)


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

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

!empty()
做了完全相同的事情,增加了对未定义变量/数组索引警告的抑制。不过它有点冗长。

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

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

!empty()
做了完全相同的事情,增加了对未定义变量/数组索引警告的抑制。不过它有点冗长。

如果您检查null,则需要使用
==(严格检查)

如果检查null,则需要使用
==(严格检查)

如果您的someRanDomFunction可能返回数组、对象、bool或null,这是一种糟糕的方法。逻辑有问题

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

($myVariable != NULL || !empty($myVariable) || $myVariable == false)

如果您的someRanDomFunction可能返回数组、对象、bool或null,这是一种糟糕的方法。逻辑有问题

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

($myVariable != NULL || !empty($myVariable) || $myVariable == false)

如果您事先希望得到一些特定的数据,那么最好明确地检查它。PHP有一系列的函数,因此它们从
is_uuz

基本上,empty是检查null,所以第二种方法是多余的。
您也可以使用isset

,如果您事先希望得到一些特定的数据,最好明确地检查它。PHP有一系列的函数,因此它们从
is_uuz

基本上,empty是检查null,所以第二种方法是多余的。
如果数组、对象和布尔值true是数据,其余:空数组、布尔值false或NULL不是“数据”,则也可以使用isset

那么,解决办法是:

$myVariable = someRanDomFunction($blah);

if(!empty($myVariable)) {
//...
}

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

那么,解决办法是:

$myVariable = someRanDomFunction($blah);

if(!empty($myVariable)) {
//...
}

…现在首先…返回值何时被视为“失败”?根据返回值,您仍然需要调用特定的求值例程,对吗?那么,为什么不一个接一个地手动检查
is_array
等,直到你把它弄对为止?然后!空的正是您需要的;)对空的。没有别的了。请参阅下面我的答案什么是空的…现在,首先…返回值何时被视为“失败”?根据返回值,您仍然需要调用特定的求值例程,对吗?那么,为什么不一个接一个地手动检查
is_array
等,直到你把它弄对为止?然后!空的正是您需要的;)对空的。没有别的了。请参见下面我的答案,内容为空
!空('0')!==(bool)$myVariable
@bwoebi-你在说什么?
[…]或内联注释中的0/'0'
。(你说空会做完全相同的事情)这两个值都是假的。啊。。。我弄糊涂了。。。当我太瞎而无法睁开眼睛看到命令行上的“!”时……
!空('0')!==(bool)$myVariable
@bwoebi-你在说什么?
[…]或内联注释中的0/'0'
。(你说空会做完全相同的事情)这两个值都是假的。啊。。。我弄糊涂了。。。当我太瞎以至于无法睁开眼睛看到命令行上的“!”时……什么是“数据”呢?什么是你的“数据”?