-1

基本上我需要合并两个数组,其中值 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

您可能已经猜到这是针对权限系统的。Nothing 表示没有权限,0 表示从不,1 表示有权限。我认为最好的解决方案可能是将两者加在一起,看看你得到 1 还是 2,但我想不出如何实现这一点。

我希望这个问题很清楚,如果没有,请要求澄清。提前感谢您的建议。

4

2 回答 2

3
foreach($array2 as $key => $val) {
   if (!isset($array1[$key])){
        $array1[$key] = $val;
   }
}
于 2012-08-31T21:45:50.747 回答
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;
}
于 2012-08-31T22:02:28.343 回答