2012-01-02 7 views
1

당신이 여기에서 찾을 수있는 내가 몇 가지 답변을 가지고이 개 배열을 결합하는 방법을 요구 한 후 :중복 키 조심 -이 문제를 해결하는 방법?

Array combine into associative array

나는 저자가 경고로, 나는했습니다, 허용 대답을 구현하지만, 한 "중복 키"문제가 발생합니다.

내가 사용하고 코드입니다 :

$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)과 동일합니다. 등등.

어떻게 해결할 수 있습니까?

미리 감사드립니다.

+0

실제 출력물은 무엇입니까? –

+0

이것은 [0] => 어레이 ( [3] => 1 [5] => 1 [6] => 0 [7] => 0 [8] => 0 ) [ 1] => 1 [>] 1 [5] => 1 [1] => 1 [7] => 0 [8] => 0 ) – KingBOB

답변

2

죄송합니다. 원래의 대답은 독해력이 전혀 부족합니다. 내가 올바르게 트릭을 할해야 이러한 목표를 달성하기 위해 노력하고 이해하는 경우 :

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

var_dump($unique); 

이 원래의 배열을 반복하고 그들을 발견으로 새로운 요소를 추가하여 독특한 배열을 구축합니다.

1

이전 배열 키를 유지 관리하는 데 신경 쓰지 않는다면 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); 
?> 
관련 문제