2013-03-19 51 views
0

當PHP你有下面的代碼:

if($var) { 
    //do something 
} 

什麼可以這意味着(除了表達我指出如下圖),我知道//do something會如果被執行:

  • $var不是false
  • $var不爲0
  • $var不是一封MPTY字符串或數組
  • $varnull

我知道這並不意味着:

  • $var已設置

看來,上面的代碼代表了PHP(和JavaScript和Python)的方式來測試一個變量。我傾向於進行明確的檢查(即$var == TRUE$var != 0),但似乎(在某種程度上)是一種「垂死的藝術」

+2

它有一個意思。它的意思是「如果變量包含真值」。 http://php.net/manual/en/language.types.boolean.php#language.types.boolean.casting – DaveRandom 2013-03-19 17:37:49

+0

@DaveRandom我同意..大聲笑「truthy」..最好的術語,我聽說用於什麼真的意味着 – Zak 2013-03-19 17:39:21

+0

我以爲我是唯一想知道「truthy」的值......除此之外,所以PHP只會嘗試輸入任何$ var的內容,如果它的「truthy」夠了,它會被視爲TRUE或FALSE?所以0.00顯然是錯誤的,但0.001更加棘手呢? – rantsh 2013-03-19 17:43:02

回答

1

if($ var)只有當$ var的值包含不是假的。如果你想知道什麼是虛假的數值/真看看下面從php.net

var_dump((bool) "");  // bool(false) 
var_dump((bool) 1);   // bool(true) 
var_dump((bool) -2);  // bool(true) 
var_dump((bool) "foo");  // bool(true) 
var_dump((bool) 2.3e5);  // bool(true) 
var_dump((bool) array(12)); // bool(true) 
var_dump((bool) array()); // bool(false) 
var_dump((bool) "false"); // bool(true) 

如果($ VAR)有一個定義(據我所知),這是評估真正如果是$ var非假

我會建議鑄造和檢查特定的類型。

我也不同意明確的檢查是「垂死的藝術」。請注意以下幾點:

$var = 1; 
if($var) // returns true since $var is 1 
然而

if ($var === true) // returns false since $var is not true its 1 

結論: 如果我想查詢具體爲$ VAR必須持有一個布爾值,我wouldnt使用如果($ VAR),因爲它在系統中創建一個錯誤。