我有一个带布尔值的数组,例如
$myarray = array(true, false, false, true, false);
现在我想对我的数组值执行一些逻辑运算,所以得到输出:
FALSE
来自我的阵列。
答案 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);