色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

PHP字符串 ==比較運算符的副作用

復制代碼 代碼如下:
$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技術PHP字符串 ==比較運算符的副作用,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 鄢陵县| 巴楚县| 宣威市| 汕尾市| 治县。| 遵义市| 宿州市| 时尚| 吐鲁番市| 鄂托克旗| 诏安县| 哈密市| 资阳市| 乡宁县| 南开区| 沭阳县| 临海市| 沙洋县| 比如县| 阿合奇县| 和静县| 高尔夫| 宝鸡市| 来宾市| 九龙坡区| 潼南县| 固始县| 上高县| 军事| 甘泉县| 龙江县| 天峨县| 毕节市| 星座| 佳木斯市| 慈溪市| 繁昌县| 枞阳县| 舒城县| 武邑县| 遂昌县|