Вот мои два массива:
$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.