基本上我需要合并两个数组,其中值0优先于1。
我找不到任何原生的php功能来做这个,也没有任何关于谷歌的功能让我感到惊讶(也许我一直在寻找错误的东西!),我想不出如何有效地做到这一点。有什么建议?
例如:
Array 1 Array 2
permission1 => 1 permission1 => 1
permission2 => 1 permission2 => 1
permission3 => 0 permission3 => 1
permission4 => 0 permission4 => 1
permission5 => 1
结果数组将是。
permission1 => 1
permission2 => 1
permission3 => 0
permission4 => 0
permission5 => 1
您可能已经猜到这是一个权限系统。没有表示没有权限,0表示从不,1表示有权限。我认为最好的解决方案可能包括将两者结合在一起,看看你是否得到1或2,但我想不出如何实现这一点。
我希望这个问题很明确,如果不是,请要求澄清。提前感谢您的建议。
答案 0 :(得分:3)
foreach($array2 as $key => $val) {
if (!isset($array1[$key])){
$array1[$key] = $val;
}
}
答案 1 :(得分:0)
如果你首先将两者合并,然后再检索它们相交的那些,最后它只用零重新执行一次,并且foreach循环它们以设置零,你应该得到正确的答案。这应该使你想要循环的数组非常小。
$arr = array_merge( $array1, $array2 );
$intersected = array_intersect_key($array1, $array2);
$intersectWithZeroes = array_keys($intersected, 0);
foreach( $intersectWithZeroes as $key => $value ) {
$arr[$key] = 0;
}