深入PHP中慎用雙等于(==)的詳解
PHP比較運(yùn)算符出現(xiàn)的頻率實(shí)在是太高了,尤其是 ==
if(a == b){
// do something
}
但是,你真的掌握了 == 了嗎?細(xì)節(jié)很重要!
來看下面的代碼,說出你認(rèn)為正確的答案
var_dump(' 123fg456'==123);
var_dump('some string' == 0);
var_dump(123.0 == '123d456');
var_dump(0 == "a");
var_dump("1" == "01");
var_dump("1" == "1e0");
先想出你的答案,然后再運(yùn)行一次看看。如果答案沒有差錯(cuò),那么恭喜你,基礎(chǔ)知識(shí)很扎實(shí)。
解釋:
如果比較一個(gè)整數(shù)和字符串,則字符串會(huì)被轉(zhuǎn)換為整數(shù)。如果比較兩個(gè)數(shù)字字符串,則作為整數(shù)比較。此規(guī)則也適用于 switch 語句。
特別注意,字符串轉(zhuǎn)換為整數(shù)時(shí),是從左到右,直到遇到非數(shù)字字符為止。也就是說 '123abc456' 會(huì)被轉(zhuǎn)換成 123,而不是 123456。另外字符串開始的空格會(huì)被忽略,比如 ' 234abc' 轉(zhuǎn)換為 234。
下面附上松散比較和嚴(yán)格比較的對(duì)照表
相關(guān)文章
使用Curl進(jìn)行抓取遠(yuǎn)程內(nèi)容時(shí)url中文編碼問題示例探討
在編碼時(shí)應(yīng)該只對(duì)部分URL編碼,否則URL中的冒號(hào)和反斜杠也會(huì)被轉(zhuǎn)義,下面有兩個(gè)不錯(cuò)的示例,有類似情況的朋友可以感受下2013-10-10php獲取后臺(tái)Job管理的實(shí)現(xiàn)代碼
從數(shù)據(jù)庫中取出job 隊(duì)列 創(chuàng)建新的進(jìn)程進(jìn)行執(zhí)行 等待job 結(jié)束2011-06-06PHP實(shí)現(xiàn)繪制二叉樹圖形顯示功能詳解【包括二叉搜索樹、平衡樹及紅黑樹】
這篇文章主要介紹了PHP實(shí)現(xiàn)繪制二叉樹圖形顯示功能,結(jié)合實(shí)例形式分析了php繪制常見二叉樹的相關(guān)操作技巧,包括二叉搜索樹、平衡樹及紅黑樹的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-11-11PHP使用enqueue/amqp-lib實(shí)現(xiàn)rabbitmq任務(wù)處理
這篇文章主要為大家詳細(xì)介紹了PHP如何使用enqueue/amqp-lib實(shí)現(xiàn)rabbitmq任務(wù)處理,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2024-03-03解析mysql中UNIX_TIMESTAMP()函數(shù)與php中time()函數(shù)的區(qū)別
本篇文章是對(duì)mysql中UNIX_TIMESTAMP()函數(shù)與php中time()函數(shù)的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06