PHP字符串 ==比較運算符的副作用
更新時間:2009年10月21日 14:17:44 作者:
PHP字符串 ==比較運算符的副作用,大家可以參考下。
復制代碼 代碼如下:
$a = '212345678912000005';
$b = '212345678912000001';
var_dump($a == $b);
這段代碼的輸出是bool(true), 說明這樣判斷會得出結論是兩者相等. 類似的特性在in_array()函數(shù)第3個參數(shù)為false或者不設置的情況. 原因是首先判斷字符串是否是數(shù)字, 然后轉換成long或者double(C語言數(shù)據(jù)類型)再判斷 - 使用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()函數(shù)設置第三個參數(shù)為true: in_array('val', $array, true).
相關文章
php實現(xiàn)將普通數(shù)據(jù)轉化為json數(shù)據(jù)
在日常的開發(fā)工作中免不了要寫接口,json格式文本的輸出是制作接口必須掌握的,所以本文主要為大家詳細介紹了php如何將普通數(shù)據(jù)轉化為json數(shù)據(jù),需要的可以參考下2023-11-11利用PHP判斷是手機移動端還是PC端訪問的函數(shù)示例
在平常工作開發(fā)中,我們通常需要開發(fā)出PC端和移動端兩個不同的系統(tǒng),從而根據(jù)訪問端的不同進入到不同的操作界面中。下面這篇文章主要給大家介紹了關于利用PHP判斷是手機移動端還是PC端訪問的函數(shù)的相關資料,需要的朋友可以參考下。2017-12-12php圖像處理函數(shù)imagecopyresampled用法詳解
這篇文章主要介紹了php圖像處理函數(shù)imagecopyresampled用法,結合實例形式詳細分析了imagecopyresampled函數(shù)的功能、參數(shù)、使用方法,需要的朋友可以參考下2016-12-12php Undefined index和Undefined variable的解決方法
這段時間在做項目過程中老是出現(xiàn)這個提示,起初是用$act來接受表單post過來的數(shù)據(jù)2008-03-03