2016-04-25 68 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