注意重复的钥匙-如何解决这个问题



在我要求一个方法来组合两个数组之后,我得到了几个答案,你可以在这里找到:

数组组合成关联数组

我已经实现了公认的答案,但是,正如作者警告的那样,我遇到了"重复密钥"的问题。

这是我使用的代码:

$a = array(4=>3,5=>3);
$b = array(array(0=>0,1=>4,2=>10,3=>1000),
           array(0=>0,1=>40,2=>100,3=>2000),
           array(4=>10)
          );
$c = array();
foreach($b as $tmp) {
    $c[] = $a+$tmp;
}
var_dump($c);

但是它返回一个像这样的数组:

Array (
    [0] => Array (
        [3] => 1 
        [5] => 1 
        [6] => 0 
        [7] => 0 
        [8] => 0
        )
    [1] => Array (
        [3] => 1 
        [5] => 1 
        [6] => 0 
        [7] => 0 
        [8] => 0
        ) 
    [2] => Array (
        [3] => 1 
        [5] => 1 
        [6] => 1 
        [7] => 0 
        [8] => 0
        )
    [3] => Array ( 
        [3] => 1 
        [5] => 1 
        [6] => 1 
        [7] => 0 
        [8] => 0
        )
    [4] =>...

可以看到键0和键1是一样的。等。

我该如何解决这个问题?

对不起,我原来的回答显示出我完全缺乏阅读理解能力。如果我正确地理解了你想要完成的任务,这应该可以达到目的:

$unique = array();
foreach ($c as $arr) {
  if ( ! in_array($arr, $unique)) {
    $unique[] = $arr;
  }
}
var_dump($unique);

这通过在原始数组上迭代并在遇到新元素时添加新元素来构建一个唯一的数组。

如果您不关心维护旧的数组键,那么您可以使用array_merge函数。

<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>

最新更新