2011-08-30 75 views
5

我的代碼中有一條if語句與以下內容類似,並且我花了我一直的時間來弄清楚問題所在。

$a = 0; 
if($a == 'something') 
{ 
//this was being output when I didn't want it to be 
} 

使用

$a = '0'; 

固定的,但我真的不知道是怎麼回事。

回答

4

一個字符串,一個整數。 PHP會在兩者之間根據需要,翻譯,除非你正在使用的「嚴格」運營商:

(0 == '0') // true 
(0 === '0') // false (types don't match). 

在你的情況,找你整數0比較字符串「某物」。 PHP會將字符串'something'轉換爲整數。如果這裏根本沒有數字,它會變成一個整數0,這使得你的比較是真實的。

+0

很快,謝謝! – Josh

2

只是一個猜測,但我認爲它試圖將字符串轉換爲整數。

intval('something')我預計將返回0

0

想要進行比較的數值($a = 0;)轉換爲字符串。在這種情況下,字符串被轉換爲數字,如果開頭沒有數字,PHP會將字符串轉換爲0,因此爲真

然而在另一種情況下,你競選了兩個不同的字符串,所以它是false

相關問題