对布尔数组值执行逻辑操作


Perform logic operations on boolean array values

我有一个带有布尔值的数组,例如

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

现在我想对我的数组值执行一些逻辑操作,所以我得到输出:

FALSE

从我的阵列。

你试图将布尔值视为字符串,这从根本上是错误的。例如,你想要的是数组缩减

$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)) ...

你可以只在你的数组中搜索false,如果它存在,则返回false,如果没有,则返回true

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

由于您编辑了问题,如果您希望它返回 0 或 1,只需执行以下操作:

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

你可以试试这个:

$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);