PHP相等的问题

在写接口时

$page = 't';
if(isset($page) && $page == 0)

判断通过了,很郁闷

应该这样写

if(isset($page) && $page === 0)
$a = '212345678912000005';

$b = '212345678912000001';

var_dump($a == $b);

  这段代码的输出是bool(true), 说明这样判断会得出结论是两者相等. 类似的特性在in_array()函数第3个参数为false或者不设置的情况. 原因是首先判断字符串是否是数字, 然后转换成long或者double(C语言数据类型)再判断 – 使用zendi_smart_strcmp. 但是, 源码中的注释说声明考虑了溢出的情况,

 } else if (dval1 == dval2 && !zend_finite(dval1)) {

  /* Both values overflowed and have the same sign,

  * so a numeric comparison would be inaccurate */

  goto string_cmp;

  }

  dval1和dval2分别是两个字符串转换为double型后的值. 但为什么还是这样呢? 也许这个判断并不正确. 进一步研究再说…

  解决方法, 使用三个等号”===”代替两个等号”==”, in_array()函数设置第三个参数为true: in_array(‘val’, $array, true).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值