下面等式哪些是成立的?
0==false
0.0==false
'' == false
[] == false
'0' == false
null==false
'0.0'==false
'0.0000' == false
答案揭晓。前6个都是对的。总结来讲就是 数字0 ,浮点0.0 ,空串,字符串0 和null 都是false的,其他的不管是谁都是true;
文档是这么说的
其实其中最麻烦的就是:
字符串'0'=false,但是,'0.0'=true
一直理解的这不就是面试题吗,真正在开发过程中能遇见这个也蛮少的,最近突然踩坑了~
真实的case是这样的,我们开发的一个功能是要用若干组数据去不断的merge,就是按照时间顺序,越新的数据排在后面,不断的merge前面的数据,最后得到一组数据;
比较真实的场景是:有一个善变的杂货店老板娘,一件商品原价4元;
第一天标价6元,第二天没标价,第三天标价5元
那么第一天标价是6,第二天应该是6,第三天是5;
数据允许为空的时候就要先应用array_fliter过滤掉空的数据,然后用后面的不断进行array_merge(旧数据,新数据)即可完成。
红框的部分也就是说,必须是false类型的就过滤了,千算万算,我们有一个税率tax_rate:“0.0000”
完美的踩进这个坑~
z这基本上是我遇到的最贴合这个知识点的例子了,分享给大家。反正从此以后我是不会再忘记了!!!!
至于解决办法吧。就是判断tax_rate== '0.0000’的时候unset掉它,其他的所有继续array_filter即可。