2016-04-25 66 views
-6

我有一個帶有布爾值的數組,例如對布爾數組值執行邏輯操作

$myarray = array(true, false, false, true, false); 

現在我想在我的陣列值執行一些邏輯運算,所以我得到的輸出:從我的陣列

FALSE 

+3

您應該在這裏得到什麼樣的結果? – Maximus2012

+1

爲什麼var_dump(),然後回顯var_dump()返回的結果? –

+2

有趣的,這裏也提到:http://php.net/manual/en/function.implode.php#104568 – dchayka

回答

1

你可以試試這個:

$res = true; 
foreach ($myarray as $item) $res &= $item; 
echo var_dump($res); 

少了幾分優雅,但它應該工作。最後你會得到一個整數,因爲我們在這裏使用位邏輯,可以改進。

對於OR情況下,你可以做幾乎同樣的事情:

$res = true; 
foreach ($myarray as $item) $res |= $item; 
echo var_dump($res); 
+0

感謝您的解決方案 – Nabi

4

你試圖把布爾字符串,這是根本錯誤的。你想要的是,例如,一個陣列減少

$res = array_reduce($myarray, function ($a, $b) { return $a && $b; }, true); 
                // default value ^^^^ 

或者更有效的短路all功能:

function all(array $values) { 
    foreach ($values as $value) { 
     if (!$value) { 
      return false; 
     } 
    } 
    return true; 
} 

if (all($myarray)) ... 
+0

感謝您的解決方案 – Nabi

2

你可以只搜索您的陣列false,如果它是目前,返回false,如果沒有返回true

$result = (array_search(false, $myarray, true) === false); 

由於您編輯了您的問題,如果您希望它返回0或1,請執行以下操作:

$result = (array_search(false, $myarray, true) === false) ? 1 : 0; 
+0

感謝您的解決方案 – Nabi