最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP容易被忽略而出錯(cuò)陷阱 數(shù)字與字符串比較

 更新時(shí)間:2011年11月10日 01:04:33   作者:  
數(shù)字與字符串比較時(shí), 先嘗試將字符串轉(zhuǎn)換為數(shù)字, 再比較, 一個(gè)不能轉(zhuǎn)換為數(shù)字的字符串, 轉(zhuǎn)換結(jié)果為0, 故, 與0比較總返回 true

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

原因是, 數(shù)字與字符串比較時(shí), 先嘗試將字符串轉(zhuǎn)換為數(shù)字, 再比較, 一個(gè)不能轉(zhuǎn)換為數(shù)字的字符串, 轉(zhuǎn)換結(jié)果為0, 故, 與0比較總返回 true.

更加詳細(xì)的比較規(guī)則, 多種類型的比較規(guī)則, 在 PHP手冊(cè)/語(yǔ)言參考/運(yùn)算符/比較運(yùn)算符 可以找到.

在PHP里當(dāng)兩個(gè)數(shù)字型字符串(只含數(shù)字的字符串)進(jìn)行比較的時(shí)候是直接轉(zhuǎn)換成數(shù)值進(jìn)行比較的
如下示例:(注意$a和$b兩個(gè)變量的最后一位不相等)

復(fù)制代碼 代碼如下:

//示例1
<?php
$a = '511203199106034578';
$b = '511203199106034579';
if ($a==$b) {
echo 'equal';
} else {
echo 'notEqual';
}
?>

運(yùn)行上面的程序卻發(fā)現(xiàn)結(jié)果為equal(非我們認(rèn)為的結(jié)果)

我們把$a與$b分別加一個(gè)字母a進(jìn)去

復(fù)制代碼 代碼如下:

//示例2
<?php
$a = 'a511203199106034578';
$b = 'a511203199106034579';
if ($a==$b) {
echo 'equal';
} else {
echo 'notEqual';
}
?>

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

示例1為equal是因?yàn)镻HP把兩個(gè)數(shù)字型字符串轉(zhuǎn)換成數(shù)字型,而這兩個(gè)數(shù)字剛好相等如下示例
復(fù)制代碼 代碼如下:

<?php
$a = 511203199106034578;
$b = 511203199106034579;
echo $a; // 輸出 5.1120319910603E+17 即511203199106030000
echo $b; // 輸出 5.1120319910603E+17 即511203199106030000
?>

所以我們?cè)谑纠?中得到的結(jié)果是equal

避免出現(xiàn)這種非預(yù)期結(jié)果的情況是使用類型比較符===如下示例(如果 $a 等于 $b,并且它們的類型也相同)
復(fù)制代碼 代碼如下:

//示例4
<?php
$a = '511203199106034578';
$b = '511203199106034579';
if ($a===$b) {
echo 'equal';
} else {
echo 'notEqual';
}
?>

這樣我們就可以得到預(yù)期中的notEqual了

相關(guān)文章

  • php5編程中的異常處理詳細(xì)方法介紹

    php5編程中的異常處理詳細(xì)方法介紹

    比較詳細(xì)的關(guān)于php5的異常處理方法,而且給出了,多種方法
    2008-07-07
  • 最新評(píng)論

    民和| 浪卡子县| 日土县| 临高县| 南乐县| 临清市| 晋江市| 宁陵县| 陆河县| 昌吉市| 万山特区| 夹江县| 中方县| 离岛区| 滦南县| 叙永县| 华阴市| 丰顺县| 宣威市| 木兰县| 金山区| 宁远县| 沾益县| 南充市| 桃园市| 开原市| 赤壁市| 绍兴县| 牙克石市| 图木舒克市| 吉木乃县| 林芝县| 榆林市| 天等县| 嘉峪关市| 永昌县| 江山市| 隆回县| 百色市| 屯昌县| 苏尼特右旗|