2013-05-30 40 views
0

我下面的兩個arrays如下,陣列合併問題

$array1 = array 
    (
     'Name' => 'Scott', 
     'Department' => 'Sales', 
     'Location' => 'USA', 
     'Details' => array 
      (
       15 => '90%', 
       16 => '75%', 
       17 => '50%', 
       18 => '60%', 
       19 => '50%', 
       20 => '45%', 
      ), 
     ); 
$array2 = array 
(
    'Action' => 'Imp', 
    'Name' => 'Scott', 
    'Department' => 'Sales', 
    'Location' => 'Canada', 
    'Details' => array 
    (
      15 => '20%', 
      16 => '15%', 
      17 => '25%', 
      18 => '10%', 
    ), 
); 

的結果應該是:

$result_arr = array 
     (
      'Action' => 'Imp', 
      'Name' => 'Scott', 
      'Department' => 'Sales', 
      'Location' => 'Canada', 
      'Details' => array 
       (
        15 => '20%', 
        16 => '15%', 
        17 => '25%', 
        18 => '10%', 
        19 => '50%', 
        20 => '45%', 
       ), 
      ); 

我試過array_mergearray union (+) operator但他們都不是適合我的要求。

+1

你能提供有關合並的要求更詳細?什麼原因導致'銷售'的價值被保留在'銷售'上? '加拿大'在'美國'? –

+0

@GeorgeCummins:它的錯字錯誤,現在我已經糾正了問題 –

+0

您回答了銷售/銷售部分,但不是美國/加拿大部分。 –

回答

0

用盡可能少的信息是被提供,我可以使用,讓您的結果是:

$array = array_merge($array1, $array2); 
$array['Details'] = $array2['Details'] + $array1['Details']; 
print_r($array); 

結果:

Array 
(
    [Name] => Scott 
    [Department] => Sales 
    [Location] => Canada 
    [Details] => Array 
     (
      [15] => 20% 
      [16] => 15% 
      [17] => 25% 
      [18] => 10% 
      [19] => 50% 
      [20] => 45% 
     ) 

    [Action] => Imp 
) 
+0

沒有key'custom_fields' ,它是我的錯字錯誤。請檢查最新的問題,謝謝。 –

+0

當我使用array_merge,我得到你的輸出,我不知道你爲什麼說它不起作用? –

+0

如果我們使用'array_merge',那麼'Details'數組隨我的需求而變化。感謝 –

1

看來,導致陣列應該像$array2$array2['Details']應該用鑰匙延長$array1['Details']

$result_arr = $array2; 
$result_arr['Details'] += $array1['Details']; 
1

試試這個

$final= array_merge($array1,$array2); 
$final['Details']= $final['Details']+$array1['Details']; 
asort($final); 
echo "<pre>"; print_r($final); 

輸出:

Array 
(
    [Location] => Canada 
    [Action] => Imp 
    [Department] => Sales 
    [Name] => Scott 
    [Details] => Array 
     (
      [15] => 20% 
      [16] => 15% 
      [17] => 25% 
      [18] => 10% 
      [19] => 50% 
      [20] => 45% 
     ) 

) 
0
$array2['Details'] = array_merge($array1['Details'], $array2['Details']); 
$result = $array2; 
1
array_replace_recursive($array1, $array2);