2013-06-24 87 views
0

我有這樣一個表達式,其中$ VAR的值爲false:

if (! isset($var) || (isset($var) && $var == false)) { 
      // This should be executed 
    } 
    else if (isset($var) && $var == true) { 
      // This is executed 
    } 

我想執行的第一個表現。上面的代碼有什麼問題? 請幫我

輸出的var_dump($轉儲):

string 'false' (length=5) 
+0

什麼已分配給$ var? –

+0

$ var is false .. – khushalbokadey

+1

爲什麼你的boolean'false'是一個字符串''false''? –

回答

1

假值從GET請求來了,我應該做這樣的:

if (! isset($var) || (isset($var) && $var == 'false')) 

感謝您的答案。

0

嘗試像

if (!isset($var) || (isset($var) && !$var)) { 
     // Do something 
} 
else if (isset($var) && $var) { 
     // Do other thing 
} 

或者乾脆試試像

if (!isset($var) || (!$var)) { 
+0

仍然不能正常工作 – khushalbokadey

+0

我認爲isset會返回false爲$ var = false – Gautam3164

+0

請參閱我編輯過的答還... – Gautam3164

2

你可以只寫邏輯如下:

if (isset($var) && $var) { 
    // Do other thing 
} else { 
    // Do something 
} 
+0

+1。所有選項中最具可讀性。 – devnull

+0

我試過了,但如果$ var是false,那麼它就進入了if塊。 – khushalbokadey

+0

@khushalbokadey對不起,但代碼永遠不會說謊,顯示'var_dump($ var)' – xdazz

1

我認爲你正在嘗試與此

if (! isset($var) || (isset($var) && $var == false)) 

做是完全空函數的定義(或者它在事實上否定)。請參閱此處的手冊頁http://php.net/empty

0
if (! isset($var) || (isset($var) && $var == 'false')) { 
      echo 'false'; 
    } 
    else if ((isset($var)) && ($var == 'true')) { 
      echo 'true'; 
    } 

使用此代碼。如果任何值被賦值給一個變量,它將在布爾表達式中被認爲是真的。這就是執行第二個條件的原因。

+0

閱讀這個[http://php.net/manual/en/language.operators.comparison.php](http://php.net/manual/en/language.operators.comparison.php) – machineaddict

+1

@machineaddict我糾正了我的答案。 ($ var == false)將評估爲true只有當$ var爲空字符串或未設置時。 –

0

如果您使用的是codeigniter,並且$var的值來自get請求,那麼您不需要鍵入如此長的表達式。這也會起作用。

if(!$this->input->get('get_variable_name')) { 
// Do something 
} else { 
// Do other thing 
} 

isset是由codeigniter自己完成的。欲瞭解更多信息,請訪問以下鏈接。

http://ellislab.com/codeigniter/user-guide/libraries/input.html

2

你有的var_dump()

string 'false' (length=5) 

您正在嘗試比較字符串到布爾回答了你自己的問題。嘗試:

$var === 'false' 
0

請注意@Nathan Bishop的答案。

if(empty($var)) { 
    //$var is false 
} else { 
    //$var exists and is true 
} 

檢查一個變量是否被認爲是空的。如果變量不存在或者其值等於FALSE,則該變量被認爲是空的。如果變量不存在,empty()不會生成警告。 Source PHP.net

如果你想在你的網址查詢用的假值真正發揮

以「1」爲真,做「0」爲假

以下值被認爲是FALSE:

  • 布爾值FALSE
  • 整數0(零)
  • 浮子0.0(零)
  • 空字符串,字符串「0」
  • 陣列與零個元素
  • 零個成員變量的對象(PHP 4只)
  • 特殊類型NULL(包括尚未設定的變量)