2015-05-17 225 views
0

不工作我有一個PHP函數,返回true或false和工作正常,當我說:邏輯運算符在PHP

if (is_valid_locale($locale)) { 
// do something 
} 

然而,當我試圖找到的東西,不返回一個有效的區域設置這個:

if (!is_valid_locale($locale)) { 
// do something else 
} 

當我回顯功能,它確實吐出「f」爲false。所以該功能起作用。

我嘗試過其他的東西,如:

if (is_valid_locale($locale)==false) { 
// do something else 
} 

但是它仍然沒有趕上。

我做錯了什麼?

+0

'echo false'將* not *打印*'「f」作爲false'*。這聽起來像你的函數實際上是返回字符串'「f」'而不是布爾'false'。 –

回答

1

如果函數返回f,它不返回布爾值。

按照慣例,函數調用is_something()應該返回一個布爾值,所以您應該修復函數is_valid_locale()以返回布爾值,而不是試圖處理它返回的內容。

只要你修好了,你的代碼應該按預期工作。

1

我認爲你應該使用===,試試這個:

if (is_valid_locale($locale)===false) { 
// do something else 
} 

或者當您回聲出的功能,但它吐出假「F」。然後試試這個:

if (is_valid_locale($locale)==='f') { 
// do something else 
} 
+0

對。 '==='如果'$ var1'等於'$ var2',則返回true,**它們是相同類型**。 –

0

如果回顯函數結果給你'f'而不是沒有,你應該把它改爲=='f'。 無論如何,檢查什麼是函數結果的類型使用

gettype(is_valid_locale($locale)) 
0

在PHP False相當於0'f'。重新檢查你的功能代碼或嘗試。

if (is_valid_locale($locale)=='f') { 
// do something else 
} 
+0

如果'false'意味着'0',爲什麼用'if(condition =='f'){}'? –

+0

因爲函數是spiting'f'.. –

+0

然後它不是真的:_In php False相當於'0'而不是''f''._ –