2017-04-07 68 views
1

正如標題所說,PHP似乎將整數值0評估爲false。PHP零整數正在評估爲false

就拿這個片段:

http://sandbox.onlinephpfunctions.com/code/13d885fb68359a3154999c2ef85db7c913c49bc5

<?php 

if($exists = checkDup()){ 
    echo $exits; 
} 
else{ 
    echo "error!"; 
} 

function checkDup ($foo = 'blah', $bar = 'blah'){ 
    if ($foo == $bar) return (int) 0; 
    return false; 
} 

正如你所看到的,儘管鑄造的答覆爲int PHP解析其不正確的返回爲假。

+0

這樣做,因爲這是它被標記爲..返回爲「0」 – clearshot66

回答

4

PHP正在評估很多都是假的;) 例如null,'',0 您必須包含一個typ e檢查,以及,你可以通過使用===!==

$exists = checkDup(); 
if($exists !== false){ 
    echo $exits; 
} 
else{ 
    echo "error!"; 
} 

function checkDup ($foo = 'blah', $bar = 'blah'){ 
    if ($foo == $bar) return 0; 
    return false; 
} 
2

您應該使用if($exists = checkDup() !== false)

0 == false; //true

0 === false; //false

當你沒有在if指定一個布爾表達式,它將執行==操作