猜猜这几行 PHP 输出的结果

2015-06-25 10:43:45 +08:00
 phpef

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

2467 次点击
所在节点    PHP
13 条回复
sevenphp
2015-06-25 11:19:10 +08:00
难道不是yyy?
Athrob
2015-06-25 11:22:08 +08:00
难道不是xxx?
hiboshi
2015-06-25 11:33:34 +08:00
应该是xxx

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

上面已经有人说了字符串和数字比较会先把字符串变成转换成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