Как в PHP добавить значения из одного массива в другой, когда их пары значений ключей совпадают?

Вот мои два массива:

$array1 =( [0] => Array ( [row_id] => 237 [comment] => 'hello0' ) [1] => Array ( [row_id] => 5 [comment] => 'hello1' ) [2] => Array ( [row_id] => 6 [comment] => 'hello2' ) ); $array2= ( [0] => Array ( [row_id] => 5 [vote] => 1 ) [1] => Array ( [row_id] => 7 [vote] => 1 ) [2] => Array ( [row_id] => 237 [vote] => 0 ) ); 

Я хотел бы сопоставлять $array1 и $array2 в [row_id] и добавлять пары / значения $array1[row_id]=$array2[row_id] в $ array1, где $array1[row_id]=$array2[row_id]

Вот как бы мне хотелось:

 $array1 =( [0] => Array ( [row_id] => 237 [comment] => 'hello0' [vote] => 0 ) [1] => Array ( [row_id] => 5 [comment] => 'hello1' [vote] => 1 ) [2] => Array ( [row_id] => 6 [comment] => 'hello2' [vote] => 1 ) ); 

Я уверен, что есть много способов сделать это, поэтому мысли о быстром вычислении также будут оценены!

 foreach($array1 as $key1=>$value1) { foreach($array2 as $key2=>$value2) { if($value1['row_id']==$value2['row_id']) { $value1['vote'] = $value2['vote']; $result[$key1][]=$value1; } } } $result is what you need! 
 foreach($array1 as $key1=>$value1) { foreach($array2 as $key2=>$value2) { if($value1['row_id']==$value2['row_id']) { if ($value2['vote']) { $result[$key1]['vote']=$value2['vote']; // You're assigning the vote value to a new index of 'vote' on the original array. } else { $result[$key1]['vote'] = 'no vote'; } } } } 

Это изменения, которые необходимы в ответе Рэя Чэна.

EDIT'd

EDIT'd снова:

Когда вы извлекаете данные из базы данных, вы можете определенно получить записи в виде массива (посмотрите, как старые, как холмы, код там). Следующий шаг – реорганизация массива в предпочтительный формат. FOREACH идеально подходит для этого.

 // $array1 brought in from some other process $arrayStorage = array(); foreach ($array1 as $row){ $arrayStorage[$row['row_id']] = array('votes'=>$row['votes'], 'comment'=>$row['comment']); } 

Когда вы хотите вернуть его в базу данных, отмените его, убедившись, что вы снова вытаскиваете ключи.

 foreach ($arrayStorage as $row_id=>$row_data){ ... 

ИЗМЕНИТЬ ПОСЛЕДНЕЕ:

Предполагая, что обе базы данных были вытащены для данных в формат OP …

 foreach ($array1 as $row){ $arrayStorage[$row['row_id']]['comment'] = $row['comment']; } foreach ($array2 as $row){ $arrayStorage[$row['row_id']]['votes'] = $row['votes']; } $array1 = $arrayStorage; // You are going through $array1 and $array2 and creating a placeholder that is built with the $row_id as an associated structure with a comment and vote for each $row_id. This is your final desired array.