2017-04-24 36 views
-1

我只是發現了PHP的怪異行爲,如果條款Comparsion奇怪的行爲0 ==「一」

var_dump((bool)0); 
var_dump((bool)"one"); 
var_dump(0 == "one"); 

它打印

bool(false) bool(true) bool(true) 

文件說,「表達進行評估,以它的布爾值」所以布爾值0false"one"true所以0 == "one"的結果應該是false,但它的代替值是true

有人可以解釋它嗎?

+1

PHP''==看起來幾乎一文不值。這似乎是相關的:http://php.net/manual/en/types.comparisons.php –

+0

「這是在手動的某處解釋的PHP行爲?(字符串與零比較)」這是不一樣的'0'和'0000 '兩者都被轉換爲0,這很明顯 – Robert

+0

「這個php行爲在手冊的某處解釋過嗎?(帶零比較的字符串)」也不一樣,因爲它將被轉換爲0,因爲它會將第一個數字轉換爲int。這是不正確的 – Robert

回答

2

"one"被轉換爲整數0因爲這樣做comparsion與整數0

如果你比較多個具有一個字符串或比較涉及數字串,則每一個字符串被轉換爲一個數字,並且比較數值執行。

入住這裏:http://php.net/manual/en/language.operators.comparison.php

+1

。請參閱http://php.net/manual/en/types.comparisons.php(' 鬆散比較與=='表)的布爾翻譯「一」 – sanderbee

+0

謝謝我找不到合適的線程來解釋它 – Robert