2012-06-08 43 views
0

我有兩個數組在php中,都有7天的日期值。每個都一樣。數組的其餘內容不同。他們看起來有點像這樣:合併兩個數組,但不是像array_merge

陣列#1:

[0] 
    [date] => 2012-05-01 
    [value 1] => 3 

陣列#2:

[0] 
    [date] => 2012-05-01 
    [value 2] => 3 

我想將它們合併得到這個:

[0] 
    [date] => 2012-05-01 
    [value 1] => 3 
    [value 2] => 3 

現在我正在使用這個slop:

$i = 0; 
$full_array = array(); 
foreach ($array_1 as $a) { 
    foreach ($array_2 as $b) { 
     if ($a['date'] == $b['date']) { 
      $full_array[$i] = $a; 
      $full_array[$i] += $b; 
      $i++; 
     } 
    } 
} 

我可以把那個人變成一個功能,但在我之前我想我會檢查是否有更好的方法。謝謝!

+4

在我看來,'array_merge($數組1,$數組2 )''在這種情況下實際上會返回你想要的,因爲:「如果輸入數組具有相同的字符串鍵,那麼該鍵的後面的值將覆蓋前一個。」 – Jeroen

+0

@Jeroen - [確實](http://codepad.viper-7.com/EffnpM) – nickb

+0

這不是我得到的。當我'print_r'我把他們堆疊起來。該鍵盤腳本中的代碼包含兩個數組。我有兩個關聯數組。 – Chords

回答

2

正如評論所述,您可以使用array_merge()。但是,你將有環外陣列,以得到它的工作,這將有for循環來更好地這樣做,你在一次同時引用:

for ($i = 0, $len = count($array_1), $full_array = array(); $i < $len; $i++) { 
    $full_array[$i] = array_merge($array_1[$i], $array_2[$i]); 
} 
+0

更清潔 - 謝謝你,戴夫! – Chords