2016-12-31 51 views
-2

示例代碼正常。

if ($xxx != false) { 
    echo 'xxxxxxxxxxx'; 
} else { 
    echo 'aaaaaaaaaaa'; 
} 

// result: xxxxxxxxxxx 


if ($xxx !== 0) { 
    echo 'xxxxxxxxxxx'; 
} else { 
    echo 'aaaaaaaaaaa'; 
} 

// result: aaaaaaaaaaa 

但是這一次讓我困惑

if ($xxx != 0) { 
    echo 'xxxxxxxxxxx'; 
} else { 
    echo 'aaaaaaaaaaa'; 
} 
// result: aaaaaaaaaaa 

$ xxx爲字符串,爲什麼這個代碼返回我假? 我已閱讀文檔http://www.php.net/manual/en/types.comparisons.php但仍不明白。

+7

什麼的$當比較出現XXX值?如果不知道這一點,我們無法幫助你。在此期間[也許你會在這裏找到你的答案](http://stackoverflow.com/q/672040/6096242)。 – tilper

+0

$ xxx是bool類型? –

回答

0

如果分配的值是這樣的:$xxx='0'(字符串類型數值),則條件if ($xxx != 0)將返回FALSE;也就是說,它試圖與它的數值進行比較。

CASE-1:

$xxx = '0'; 
if ($xxx != 0) { 
    echo 'xxxxxxxxxxx'; 
} else { 
    echo 'aaaaaaaaaaa'; 
} 
// result: aaaaaaaaaaa 

情形2:

$xxx = '0'; 
if ($xxx !== 0) { 
    echo 'xxxxxxxxxxx'; 
} else { 
    echo 'aaaaaaaaaaa'; 
} 
// result: xxxxxxxxxxx 
0

因爲!=不是一個聰明的。它不能確定這個值是字符串類型還是布爾類型。

您應該使用==代替,如果你想精確比較

0
$var1 = false; // yes 
if ($var1 == 0) echo 'yes'; else echo 'no'; 

$var2 = 0; // yes integer convert to boolean 
if ($var2 == false) echo 'yes'; else echo 'no'; 

$var3 = '0'; // yes string 2 integer 2 boolean 
if ($var3 == false) echo 'yes'; else echo 'no'; 

$var4 = 0; // no integer not 2 boolean 
if ($var4 === false) echo 'yes'; else echo 'no'; 

$var5 = '0'; // no string not 2 integer and not 2 boolean 
if ($var5 === false) echo 'yes'; else echo 'no';