欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP字符串 ==比較運(yùn)算符的副作用

 更新時(shí)間:2009年10月21日 14:17:44   作者:  
PHP字符串 ==比較運(yùn)算符的副作用,大家可以參考下。
復(fù)制代碼 代碼如下:

$a = '212345678912000005';
$b = '212345678912000001';
var_dump($a == $b);

這段代碼的輸出是bool(true), 說明這樣判斷會(huì)得出結(jié)論是兩者相等. 類似的特性在in_array()函數(shù)第3個(gè)參數(shù)為false或者不設(shè)置的情況. 原因是首先判斷字符串是否是數(shù)字, 然后轉(zhuǎn)換成long或者double(C語言數(shù)據(jù)類型)再判斷 - 使用zendi_smart_strcmp. 但是, 源碼中的注釋說聲明考慮了溢出的情況,
復(fù)制代碼 代碼如下:

} 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分別是兩個(gè)字符串轉(zhuǎn)換為double型后的值. 但為什么還是這樣呢? 也許這個(gè)判斷并不正確. 進(jìn)一步研究再說...

解決方法, 使用三個(gè)等號(hào)"==="代替兩個(gè)等號(hào)"==", in_array()函數(shù)設(shè)置第三個(gè)參數(shù)為true: in_array('val', $array, true).

相關(guān)文章

最新評(píng)論