素材牛VIP会员
php里,为什么0 == 'abc'是成立的?
 素材牛  分类:PHP代码  人气:880  回帖:6  发布于6年前 收藏

0==''是成立的我倒是明白,
0=='abc'也成立就不懂了,请各位指教!

 标签:php

讨论这个帖子(6)垃圾回帖将一律封号处理……

Lv6 码匠
好***下 职业无 6年前#1

确实是php特性导致的,可以用empty() 代替 ==0 判断

Lv1 新人
Sm***ty CEO 6年前#2

啊哈,前两天正好看了相关的文章,这是因为你的是一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较
PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0
例如:123abc转换后应该是123,而abc则为00==0这当然是成立的啦!
具体可以参考官方手册:如果比较一个整数和字符串,则字符串会被转换为整数。
PS: @gaosboy 讲的'00'=='000'则是两个字符串的比较,官方手册也有解释。

Lv1 新人
Sm***ty CEO 6年前#3

看到这里,觉得是时候仔细看看php手册了~~~

Lv6 码匠
素***2 学生 6年前#4

考考大家,不做测试,直接说出var_dump(count('abcde'))的打印结果是什么

Lv4 码徒
Su***er JS工程师 6年前#5
$a = 'abc';
$b = (int)$a;
echo $b;
if(0 == $b){
    //成立
}

执行一下你就知道了

Lv6 码匠
素***2 学生 6年前#6

可以用 0 === 'abc'判断试试

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取