2013-04-08 94 views
0

PHP检查我有这样的代码:为有效函数返回

$myVariable = someRanDomFunction($blah)

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

如果检查$myVariable有一些数据的最佳方法是什么?

现在我这样做:

!empty($myVariable)

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

UPDATE *

通过 '一些数据' 我的意思是如果TRUE其布尔,不为空数组,并且比NULL

+0

......现在首要的事情......当返回值被认为是“失败”?根据返回值,您需要调用特定的评估程序,对吧?那么为什么不手动检查'is_array'等等,一个接着一个,直到你找对了? – 2013-04-08 20:30:35

+1

Then!empty正是你需要的;) – bwoebi 2013-04-08 20:36:12

+0

更新了我的帖子 – rinchik 2013-04-08 20:36:19

回答

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

空以外的任何值就足够了。如果您说布尔值不是数据,请检查!is_bool。 (empty(false)还回报true

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

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

UPDATE:你需要什么:(!空([]))

PHP>的var_dump;

布尔(假)

PHP>的var_dump(空( “”)!);

布尔(假)

PHP>的var_dump(空(假的)!);

布尔(假)

PHP>的var_dump(空(真正的)!);

布尔(真)

PHP>的var_dump(空(NULL)!);

布尔(假)

+0

非常感谢:) +1 – rinchik 2013-04-08 20:57:17

1

简单地做一个隐含的布尔检查将排除falsearray()null

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

!empty()做同样的事情,与有关未定义变量/数组索引警告添加抑制。尽管如此,这有点文字。

+1

'!empty('0')!==(bool)$ myVariable' – bwoebi 2013-04-08 20:34:12

+0

@bwoebi - 你在说什么? – 2013-04-08 20:37:39

+0

'或0 /'0''在您的内嵌评论中。 (你说空了会做同样的事情) – bwoebi 2013-04-08 20:40:13

0

如果您someRanDomFunction可能会返回一个数组,对象,布尔或空,这是不错的方法。逻辑错了。

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

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

空已覆盖false&null – bwoebi 2013-04-08 20:34:49

+0

它是AND。不是。 – 2013-04-08 20:35:19

+0

@bwoebi,谢谢。我不知道。 – KryDos 2013-04-08 20:36:18

0

如果您事先预计了某些特定数据,最好明确检查一下。 PHP有一堆功能可以做到这一点,他们开始is_

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

0

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

该解决方案的话,会是这样一个:

$myVariable = someRanDomFunction($blah); 

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

什么是你的“数据”? <<线索更新了他的帖子 – bwoebi 2013-04-08 20:42:55