非空str==0的结果为true

WBOY
Release: 2016-06-23 14:18:03
Original
1309 people have browsed it

<?php      $str='asdfasdfa';     $bool = ($str==0);     echo $bool;?>
Copy after login

这里bool居然为true.....
这是为什么


回复讨论(解决方案)

你这样

<?php      $str='asdfasdfa';     $bool = ($str=='0');     echo $bool;?>
Copy after login
Copy after login
Copy after login

或者
<?php      $str='asdfasdfa';     $bool = ($str===0);     echo $bool;?>
Copy after login
Copy after login
Copy after login

看看结果,然后再自己分析吧

你这样

<?php      $str='asdfasdfa';     $bool = ($str=='0');     echo $bool;?>
Copy after login
Copy after login
Copy after login

或者
<?php      $str='asdfasdfa';     $bool = ($str===0);     echo $bool;?>
Copy after login
Copy after login
Copy after login

看看结果,然后再自己分析吧
可是php中的运算0 不是表示空字符串么?

如楼上

我是这样分析的

echo $str > 0 结果空
echo $str < 0 结果空
echo $str == 0 结果1

因为$str是字符串,本身就不是数字,所以作为数字来说$str确实是false,php里false==0是true

参考我这个帖子.我在搜索数据库的时候,varchar字段用col=0来搜索 结果错误 换用col is null后正确
应该是同样道理
http://bbs.csdn.net/topics/390529217

楼上解释有道理


居然先转的是字符串 我以为 会先把0 转换为字符串!!!!

== 做比较时 会类型转换 字符串和数字比较时 如果字符串里不是0 全部都转换成0 做比较结果肯定是true 你可以试试 用'===' 做比较就明白了


居然先转的是字符串 我以为 会先把0 转换为字符串!!!!

呵呵,让你用那些做实验你都看不出来,那没办法了


你这样

<?php      $str='asdfasdfa';     $bool = ($str=='0');     echo $bool;?>
Copy after login
Copy after login
Copy after login

或者
<?php      $str='asdfasdfa';     $bool = ($str===0);     echo $bool;?>
Copy after login
Copy after login
Copy after login

看看结果,然后再自己分析吧
可是php中的运算0 不是表示空字符串么?
嘿嘿

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!