2010-04-28 7 views
2

у меня есть два массива, как это, на самом деле это MySQL данные, полученные из двух разных серверов:присоединения/слияния двух массивов

$array1 = array ( 
        0 => array ('id' => 1, 'name' => 'somename') , 
        1 => array ('id' => 2, 'name' => 'somename2') 
); 
$array2 = array ( 
        0 => array ('thdl_id' => 1, 'otherdate' => 'spmethings') , 
        1 => array ('thdl_id' => 2, 'otherdate' => 'spmethings22') 
); 

как я могу присоединиться к/слияния массив, так это выглядит, как этот

$new_array = array ( 
     0 => array ('id' => 1, 'name' => 'somename', 'otherdate' => 'spmethings') , 
     1 => array ('id' => 2, 'name' => 'somename2', 'otherdate' => 'spmethings22') 
); 
+0

Какова логика этого? Куда идет 'thdl_id'? –

+0

Можно ли предположить, что они оба в порядке и содержат одинаковые идентификаторы? –

+0

@Pekka - Я думаю, что thdl_id - это то же самое, что и 'id'. –

ответ

0

Вполне возможно, что я misunderstandi ng, но это то, что вы ищете?

for ($i = 0; $i < count($array1); $i++){ 
    $new_array[$i] = array_merge($array1[$i], $array2[$i]); 
    unset($new_array[$i]['thdl_id']); //since i'm assuming this is a duplicate of 'id' 
} 
2

Нечто подобное + проверить, если их размеры одинаковы, если вы хотите ..

$res = array() 
for ($i = 0; $i < count($array1); ++$i) 
{ 
    $res[] = array_merge($array1[$i], $array2[$i]); 
} 
+0

хорошо. я бы добавил $ number = min (count ($ array1), count ($ array2)); а затем просто введите $ i <$ number в цикле –

+0

Не стесняйтесь. :))) – hsz

1

Нравится INNER JOIN? Вам нужно будет сделать это вручную. Я знаю, что PHP имеет довольно набор экзотических функций, но никто не делает то, что вы хотите, насколько мне известно.

Think "inserting sort." Сортируйте оба массива и пройдите их. Объедините строки по мере продвижения.

Смежные вопросы