首頁 > php教程 > php手册 > PHP字符串==比较的副作用

PHP字符串==比较的副作用

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-21 08:52:30
原創
1109 人瀏覽過

  $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).



相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
數組轉化array
來自於 1970-01-01 08:00:00
0
0
0
老師,為什麼我輸出的Array是空的
來自於 1970-01-01 08:00:00
0
0
0
es6 - JavaScript如何將string轉array
來自於 1970-01-01 08:00:00
0
0
0
把兩個Array合併為一個json的格式
來自於 1970-01-01 08:00:00
0
0
0
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板