簡單的一個判斷式, 如下述:

<?php

$types = 0;
if ($types == 'abc')
    echo 'a';
else
    echo 'b';
?>

這個按照預期應該是會顯示b,但是實際上的會顯示a

簡單說php有一個邏輯  0 == 'string' 恆為 true 。

但是這個部份官方不認為是bug,所以個應該會一直下去。

 

但是他也是可已有解法的。

使用 === 來解決. (註: === 會比對 "型態 + 值" 是否相同)

範例:

$a = 0;

echo ($a === 'abc') ? "0 === abc<BR>" : "0 !== abc<BR>";

顯示 0 !== abc

 

$a = 0;

echo ($a == 'abc') ? "0 = abc<BR>" : "0 != abc<BR>";

顯示 0 = abc

簡單說 0 == "string" 會恆為 true 的原因就是:, 因為字串轉換成 integer 會變成 0 (使用 strtod() 來作 ATOI 的時候, 無法轉換 就會變成 0), 所以用 === 解決.

 

arrow
arrow
    文章標籤
    php PHP
    全站熱搜

    阿基 發表在 痞客邦 留言(0) 人氣()