2016-10-27 14 views
-1

次の式が真に評価される理由を知りたいと思います。次の式がtrueに評価されるのはなぜですか?

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

は 'エコー(int)を行い期待して '';'、あなたがよりよく理解します。 – leninhasda

+2

文字列を整数と比較すると、自動的に整数としてキャストされ、数値が含まれていない場合、そのキャストの結果は0になり、 '0 == 0' - 文字列と整数でなければなりません。そうしなければならない場合は厳密な比較を行います: ''a '=== 0'はfalseです。 –

答えて

6

String conversion to numbers(PHPマニュアル、強調鉱山から)

文字列が数値コンテキストで評価される場合、以下のように、得られた値 とタイプが決定されます。 『E』 と数値が整数型の制限( PHP_INT_MAXによって定義される)に収まる、文字列として評価される

文字列が文字のいずれかが含まれていない場合、「」、 『E』、または整数。他のすべての ケースでは、フロートとして評価されます。

値は文字列の最初の部分で与えられます。文字列 が有効な数値データで始まる場合は、これが使用されます。 それ以外の場合は、値は0(ゼロ)になります。有効な数値データは、 オプション記号の後に1つ以上の数字(任意に の小数点を含む)が続き、その後にオプションの指数が続きます。指数部は で、「e」または「E」の後に1つ以上の数字が続きます。

例:

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

関連する問題