四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

PHP容易被忽略而出錯陷阱 數字與字符串比較

0 與任意非數字(或者說,不可轉化為數字的字符)前導的字符串比較(操作符為==), 均返回 true.

原因是, 數字與字符串比較時, 先嘗試將字符串轉換為數字, 再比較, 一個不能轉換為數字的字符串, 轉換結果為0, 故, 與0比較總返回 true.

更加詳細的比較規則, 多種類型的比較規則, 在 php手冊/語言參考/運算符/比較運算符 可以找到.

php里當兩個數字型字符串(只含數字的字符串)進行比較的時候是直接轉換成數值進行比較的
如下示例:(注意$a和$b兩個變量的最后一位不相等)
復制代碼 代碼如下:
//示例1
<?php
$a = '511203199106034578';
$b = '511203199106034579';
if ($a==$b) {
echo 'equal';
} else {
echo 'notEqual';
}
?>

運行上面的程序卻發現結果為equal(非我們認為的結果)

我們把$a與$b分別加一個字母a進去

復制代碼 代碼如下:
//示例2
<?php
$a = 'a511203199106034578';
$b = 'a511203199106034579';
if ($a==$b) {
echo 'equal';
} else {
echo 'notEqual';
}
?>

這次輸出的是notEqual(正確的結果)

示例1為equal是因為php把兩個數字型字符串轉換成數字型,而這兩個數字剛好相等如下示例
復制代碼 代碼如下:
<?php
$a = 511203199106034578;
$b = 511203199106034579;
echo $a; // 輸出 5.1120319910603E+17 即511203199106030000
echo $b; // 輸出 5.1120319910603E+17 即511203199106030000
?>

所以我們在示例1中得到的結果是equal

避免出現這種非預期結果的情況是使用類型比較符===如下示例(如果 $a 等于 $b,并且它們的類型也相同)
復制代碼 代碼如下:
//示例4
<?php
$a = '511203199106034578';
$b = '511203199106034579';
if ($a===$b) {
echo 'equal';
} else {
echo 'notEqual';
}
?>

這樣我們就可以得到預期中的notEqual了

php技術PHP容易被忽略而出錯陷阱 數字與字符串比較,轉載需保留來源!

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

主站蜘蛛池模板: 青春喂了狗| 好戏一出| 百岁宫简介| 侠侣探案| 违规吃喝问题研讨发言材料| 在线观看www视频| 滑胎最凶的食物孕早期| 布袋头| 《最后的凶手》免费观看| 拔萝卜电影| 户田惠子| 小镇追凶电影免费观看| 蝴蝶视频在线观看| tvb直播| 申请采购的请示范文| 张静初吴彦祖演的门徒| 法律援助中心免费写诉状| 伴娘| 77316电影| 猫小帅三十六计| 吸油记游戏破解版无限金币| 木村多江| 抗战电视剧大全免费| 女生被侵犯的视频| 五年级语文第七单元作文| 沈敏| 无声真相电影免费观看| 杨玉环秘史| 四川旅游攻略| 回复者术之重启人生| 项目负责人任命书| 夜色斗僵尸| 红灯区1996| 大太监李莲英| 校园风暴| lanarhoades在线av| 接吻摸胸视频| 戴安·梅尔致命诱饵电影上映时间 | 一半海水一半火焰免费观看| 免费看黄直播| gale harold|