奇怪的双等行为(php)

奇怪的双等行为(php),php,Php,我的问题是为什么 $validationFail = "1"; $validationFail .= "i88"; $validationFail .= "w19"; echo $validationFail; if($validationFail==1){ echo "hello world"; } 输出1i88w19hello world 我知道if在===时失败,但为什么会发生这种情况 (运行代码)当您将字符串与数字进行比较时,它会将字符串转换为数字,然后将其与其他数字进行比

我的问题是为什么

$validationFail = "1";
$validationFail .= "i88"; 
$validationFail .= "w19"; 
echo $validationFail;
if($validationFail==1){
    echo "hello world";
}
输出1i88w19hello world

我知道if在===时失败,但为什么会发生这种情况


(运行代码)

当您将字符串与数字进行比较时,它会将字符串转换为数字,然后将其与其他数字进行比较。将字符串转换为数字的方法是读取字符串,直到它到达第一个非数字字符。因此字符串
1i88w19
变为
1
,并且
1==1
为真。

将字符串与整数进行比较。PHP具有更喜欢整数比较的动态类型,特别是当两个操作数看起来都像整数时。因此它将字符串转换为第一个已知整数?实际上它将转换任何字符串。在数字上下文中,大多数字符串将等于零。在php中,compare string将使用strcmp()而不是==,==将失败,因为===仅在两个变量包含完全相同的值时才会返回true。谢谢你们,对此无知表示歉意。但现在我知道了!感谢您的澄清,10分钟内即可接受。。。。