2010-01-03 29 views
3
// today is 03 Jan 2009 
$datemonth = (int) date("md"); 

if($datemonth == 0103){ 
    echo "Match"; 
} else { 
    echo "Not a match"; 
} 

我收到Not a match作爲結果。當比較爲整數時,0103是否等於103?在這種情況下,我可以使用if($datemonth == 103)來達到預期的行爲。但爲什麼邏輯失敗?前導零在整數中沒有任何值,對嗎?PHP比較混淆

回答

9

當您開始一個前導零的數字文字時,這意味着數字是八進制數(基數爲8)。你可能意味着它是一個小數(基數爲10)的數字。十進制中的0103等於十進制中的67。刪除前導零,你的代碼應該工作。有關更多details on numeric literals,請參閱PHP文檔。

+2

+1嘿,這總是讓我。接得好。 – cletus

+2

+1該死的八卦! – missingfaktor

+0

謝謝!這絕對是我的! – Nirmal