将数组值转换为if语句的最佳方法是什么?数组值应通过AND与数组进行比较。我可以使用EVAL执行此操作,但需要查找除EVAL之外的其他内容。
$arr = Array(
[0] => Array
(
[0] => false
[1] => true
)
[1] => Array
(
[0] => true
[1] => false
)
[2] => Array
(
[0] => false
)
[3] => Array
(
[0] => true
)
[4] => Array
(
[0] => true,
[1] => true,
[2] => true
)
)
我想为if语句动态构建比较..
例如
if( ($arr[0][0] && $arr[0][1]) || ($arr[1][0] && $arr[1][1]) .... and so on )
答案 0 :(得分:3)
$result = array_reduce($arr, function ($result, array $values) {
return $result || array_reduce($values, function ($result, $value) {
return $result && $value;
}, true);
}, false);
if ($result) ...
一个array_reduce
可以优雅地为一个数组执行此操作,您只需要为两个嵌套数组级别执行此操作。
答案 1 :(得分:2)
您正在做的是从数组中的值生成单个布尔值。这称为减少操作。在php中,我们可以使用array_reduce(..)
执行此操作。
array_reduce($input,
function($prev, $item) {
//Short-circuit if we already deduced it to be true
if($prev) {
return $prev;
}
//If one value is false, the entire thing is false
foreach($item as $k => $v) {
if(!$v) {
return false;
}
}
//All were true
return true;
}, false);