对布尔数组值执行逻辑运算

时间:2016-04-25 14:32:09

标签: php arrays boolean

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

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

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

FALSE

来自我的阵列。

3 个答案:

答案 0 :(得分: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)) ...

答案 1 :(得分:2)

您可以在数组中搜索false,如果它存在,则返回false,如果不返回true

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

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

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

答案 2 :(得分: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);