我有一个带有布尔值的数组,例如
$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);