<?php
// your code goes here
if (0 == "asdf")
echo "same";
else
echo "not same";
Run Code Online (Sandbox Code Playgroud)
你好,为什么这段代码打印"相同",而不是"不相同"?我对这个奇怪的结果有点困惑.这是一个错误吗?
执行结果:请参阅http://ideone.com/wfWRlq
不,这不是字符串刚刚被转换为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)