2013-04-08 67 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