我在用php作字串比較的時候,遇到了坑,如程式碼所示:
<?php
var_dump('00E73694765433'=='0'); //true
var_dump('0134b40fsbi94u8'=='0'); //false
var_dump('0134b40fsbi94u8'=='134'); //false
echo PHP_EOL;
var_dump(is_numeric('00E73694765433'));//true
var_dump(is_numeric('0134b40fsbi94u8'));//false
?>
第一個得到的結果是true,而第二個為false。翻了一下官方文檔,如果第①個強制轉換成數字 0,那麼第②個應該強制轉換成134,但是如果是轉為134則第③個應該是正確的。
我印了一下兩個字串,得出來的結果也很奇怪,看了官方文件根本搞不懂,求大神指教一下!
http://www.php.net/manual/zh/...
var_dump('0134b40fsbi94u8'=='134'); //false 是比較的
因為都是字串 就先比較第一位 第一位的比較結果 是0和1的比較 所以 是false
另外 字串之間的不建議使用比較運算子直接去比較大小,如果在需要比較php也提供了一些字元的比較函數
不同類型的資料比較,最好還是用全等===和不全等!==運算子.
因為比較運算子全等===和不全等!==會對型別進行檢查:
一句話,比較時盡量用===和!==而不用==和!=.
此外,PHP也提供了一系列類型檢查函數:
一些函數,也提供有型別檢查參數,需要注意,例如:
第三個參數的值為 true 則函數也會檢查型別是否相同.
另外,PHP也支援用比較運算子==,!=,===,!==來比較兩個陣列或兩個物件是否相等.
PHP也支援用比較運算子(==,!=,===,!==)判斷兩個物件是否相等:
你第一個字串剛好符合了科學計數法。
對於類型限制不嚴的語言,常有這樣的坑上新聞。
盡量使用嚴格帶類型的檢查
對於 php 這種弱型語言,能用
===
就別用==