10
當我在PHP在練習,我注意到,下列表述產生奇怪的結果:爲什麼表達式011 == 11的計算結果爲false?
011 == 11 // false
'011' == 11 // true
難道他們不應該既評估,以相同的結果?
當我在PHP在練習,我注意到,下列表述產生奇怪的結果:爲什麼表達式011 == 11的計算結果爲false?
011 == 11 // false
'011' == 11 // true
難道他們不應該既評估,以相同的結果?
這是因爲011
被視爲八進制值,因爲前導0
。
這裏的更深入的說明:
011
文字識別爲八進制值9
9 == 11 // false
從'011' == 11
開始,它的計算結果爲true
,因爲當字符串與整數比較時,它也被強制爲整數值。有趣的是,字符串中的前導零在進程中被忽略,並且php解釋器將該值視爲而不是一個八進制數!
非常好的解釋。 –
我知道八進制表示時沒有引用,但假設引用相同,確實很有趣! –
正確! 'var_dump(011 == 9);''var_dump(011 === 9);' – Progrock