我正在處理一些數據解析代碼,但遇到以下情況。奇怪的PHP字符串整數比較和轉換
$line = "100 something is amazingly cool";
$key = 100;
var_dump($line == $key);
那麼我們大多數人會想到傾倒產生false
,但讓我吃驚的是轉儲是true
!
我也明白,在PHP中存在類型轉換這樣的:
$x = 5 + "10 is a cool number"; // as documented on PHP manual
var_dump($x); // int(15) as documented.
但是,爲什麼像我在第一個例子是如何提到的比較轉換我的字符串,而不是整數,那麼整數轉換爲字符串。
我不明白,你可以做一個===
嚴格,比較我的例子,但我只是想知道:
- 有PHP文檔提這種行爲的任何部分?
- 任何人都可以解釋爲什麼PHP中發生?
- 程序員如何防止這種問題?
==數字比較我認爲,當你把它和字符串,並將它轉換爲數字,如果它以數字開頭,它使用該數字。如果它不會像NaN那樣返回。 – rubixibuc 2012-02-13 08:53:55
我們大多數人會期望這....當將一個字符串轉換爲一個整數(比較字符串與數字時發生的情況)時,PHP會停在它遇到的第一個非數字數字處,在這種情況下爲100(所有數字)和「某些東西」之間的空格。 SO 100是結果值。 – 2012-02-13 08:54:17
請參閱http://stackoverflow.com/a/8672423 – Gumbo 2012-02-13 08:54:55