Heim  >  Artikel  >  Backend-Entwicklung  >  非空str==0的结果为true

非空str==0的结果为true

WBOY
WBOYOriginal
2016-06-23 14:18:031310Durchsuche

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

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


回复讨论(解决方案)

你这样

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

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

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

你这样

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

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

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

如楼上

我是这样分析的

echo $str > 0 结果空
echo $str  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;?>

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn