为什么下面的表达式求值为真


Why the following expression is evaluated to true?

我想知道为什么下面的表达式被求值为true

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

字符串到数字的转换(来自PHP手册,重点是我的)

在数值上下文中计算字符串时,结果值为和类型确定如下:

如果字符串不包含任何字符'。', 'e'或'e'并且数值符合整数类型限制(由PHP_INT_MAX),则该字符串将被计算为整数。在其他方面在这种情况下,它将作为浮点数计算。

该值由字符串的初始部分给出。如果字符串从有效的数字数据开始,这将是所使用的值。否则,该值为0(零)。有效的数字数据是一个可选符号,后面跟着一个或多个数字(可选包含小数点),后跟一个可选的指数。指数是an'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)

你可能会想到

<?php
var_dump('a' === 0);
https://eval.in/667364