>  기사  >  백엔드 개발  >  见鬼啦

见鬼啦

WBOY
WBOY원래의
2016-06-23 13:56:19833검색

<?php     $huancuns='[{"id":"1","time":"0"},{"id":"2","time":"0"}]';            if($huancuns=="null"||$huancuns==''||$huancuns==0)            {                             echo ("311");            }            else            {                               echo("211");            }?>


为什么输出的是311.。。坑爹见鬼了?


回复讨论(解决方案)

$huancuns==0 不是成立吗?
$huancuns === 0 才不成立

$huancuns==0 不是成立吗?
$huancuns === 0 才不成立



'[{"id":"1","time":"0"},{"id":"2","time":"0"}]' 这个等于0???

字符串转换成数字,如果字符串开头不是数字的话,结果就是0。

这有什么可奇怪的?

var_dump('[{"id":"1","time":"0"},{"id":"2","time":"0"}]' == 0);
bool(true)

这有什么可奇怪的?

var_dump('[{"id":"1","time":"0"},{"id":"2","time":"0"}]' == 0);
bool(true)



学习了,呵,还不如去掉  == 0 

这种判断本来就该写作
if(empty($huancuns)) {
  //为空时的处理
}

判断变量是否是null,0 “” “0”……用empty($str)

php 比较,当两端有一端是数字,都会转成数字比较的。
可以这样写

            if(!$huancuns) {                echo ("311");            }else{                echo("211");            }

empty或者!都可以 
==和 不加()都会产生奇怪的现象...
这是和机制相关的

$huancuns==0 // 去掉这个条件可能是把这个字符串转化成了数字,但是转换失败了,直接就给转成了 0 。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.