猜猜这几行 PHP 输出的结果

2015 年 6 月 25 日
 phpef

<?php
$a='123';
if($a==0)
echo "xxx";
else
echo "yyy";

3077 次点击
所在节点    PHP
13 条回复
sevenphp
2015 年 6 月 25 日
难道不是yyy?
Athrob
2015 年 6 月 25 日
难道不是xxx?
hiboshi
2015 年 6 月 25 日
应该是xxx

字符串和int 比较时候会转为 int 0
jhdxr
2015 年 6 月 25 日
@Athrob
@hiboshi 肯定是xxx啊,字符串和int比较会转为数字(相当于intval),所以是123和0比。你说的字符串和int比会变成0是因为大部分字符串不是以数字开头而已
jhdxr
2015 年 6 月 25 日
手滑打错了。。。肯定是yyy。。。。不影响解释。。。
hiboshi
2015 年 6 月 25 日
@jhdxr 没看清楚 字符串里面是123 而不是 abc 如果是abc会转换失败 123会直接 (int)123
laoyuan
2015 年 6 月 25 日
$a='123abc';
thanksir
2015 年 6 月 25 日
yyy
xuyl
2015 年 6 月 25 日
php弱类型语言。==是大坑,false,null,'0',等与0比较都返回true,这能忍?用===吧
hippoboy
2015 年 6 月 25 日
不用猜一定是yyy
phpef
2015 年 6 月 25 日
写错了,应该这么问?
<?php
$a='123abc';
if($a==0)
echo "xxx";
else
echo "yyy";
snailsir
2015 年 6 月 25 日
跑一下不就得了。。。。。。yyy
timsims
2015 年 6 月 29 日
不知道楼主到底想问什么。。

上面已经有人说了字符串和数字比较会先把字符串变成转换成int
'123abc' 就相当于 123
要得出 xxx 那字符串要么是 0abc 要么是 abc123

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/200997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX