2016-10-27 106 views
-1

我想知道爲什麼下面的表達式被評估爲true。爲什麼以下表達式被評估爲true?

var_dump(('a' == 0)); //bool(true) 
+2

做一個'回聲(int)的 'A';',你會更好地理解。 – leninhasda

+2

當字符串與整數進行比較時,它們會自動作爲整數進行轉換,如果它們不包含數字,則該轉換的結果爲0.並且'0 == 0' - 這就是爲什麼您從不將字符串與整數 - 如果必須,則使用嚴格比較:''a'=== 0'是錯誤的。 –

回答

6

String conversion to numbers(從PHP手冊,重點煤礦)

當一個字符串在數值上下文中計算,將得到的值 和類型被確定如下。

如果字符串不包含任何字符「」,‘E’,或‘E’ 和數值裝配到整數類型的限制(如通過 PHP_INT_MAX定義)時,字符串將被評估爲一個整數。在所有其他 的情況下,它將被評估爲浮動。

該值由字符串的起始部分給出。如果字符串 以有效數字數據開頭,則這將是使用的值。 否則,該值將爲0(零)。有效的數字數據是一個可選符號 ,後跟一個或多個數字(可選包含小數點 ),後跟可選的指數。指數是 'e'或'E'後跟一個或多個數字。

例子:

var_dump(('a' == 0)); //bool(true) 
var_dump(('a' === 0)); //bool(false) 
var_dump(('aaaa' == 0)); //bool(true) 
var_dump(('1aaaa' == 1)); //bool(true) 
var_dump(('18aaaaa' == 18)); //bool(true) 
1

你可能會想到這

<?php 
var_dump('a' === 0); 

https://eval.in/667364

+0

不,我知道「==」和「===」之間的區別。不管怎麼說,還是要謝謝你! – Dumitru

相關問題