为什么零(0)和字符串在PHP中是相同的?

use*_*957 0 php

<?php

// your code goes here
if (0 == "asdf")
    echo "same";
else
    echo "not same";
Run Code Online (Sandbox Code Playgroud)

你好,为什么这段代码打印"相同",而不是"不相同"?我对这个奇怪的结果有点困惑.这是一个错误吗?

执行结果:请参阅http://ideone.com/wfWRlq

Riz*_*123 6

不,这不是字符串刚刚被转换为int的错误.它将其从左向右转换为非数值.因此,由于在开始时存在非数字值,因此它将转换为0.

有关String to int的更多信息,请参阅手册:http://php.net/manual/de/language.types.string.php#language.types.string.conversion

从那里引用:

该值由字符串的初始部分给出.如果字符串以有效数字数据开头,则这将是使用的值.否则,该值将为0(零).

以此为例来说明:

echo "5xyz" + 5;  // 5 + 5 -> 10
    //^
echo "xyz5" + 5;  // 0 + 5 -> 5
       //^
echo "x5z"  + 5;  // 0 + 5 -> 5
     //^
Run Code Online (Sandbox Code Playgroud)