PHP объединяет два ассоциативных массива в один массив

$array1 = array("$name1" => "$id1"); $array2 = array("$name2" => "$id2", "$name3" => "$id3"); 

Мне нужен новый массив, объединяющий все вместе, то есть он будет

 $array3 = array("$name1" => "$id1", "$name2" => "$id2", "$name3" => "$id3"); 

Каков наилучший способ сделать это?

Извините, я забыл, что идентификаторы никогда не будут совпадать друг с другом, но технически имена могли бы, но это было бы маловероятно, и все они должны быть перечислены в одном массиве. Я посмотрел на array_merge, но не был уверен, что это лучший способ сделать это. Кроме того, как вы можете это проверить?

array_merge() более эффективен, но есть несколько вариантов:

 $array1 = array("id1" => "value1"); $array2 = array("id2" => "value2", "id3" => "value3", "id4" => "value4"); $array3 = array_merge($array1, $array2/*, $arrayN, $arrayN*/); $array4 = $array1 + $array2; echo '<pre>'; var_dump($array3); var_dump($array4); echo '</pre>'; 

Проверьте array_merge() .

 $array3 = array_merge($array1, $array2); 

Другим вариантом является array_replace , где исходный массив модифицируется другими массивами:

  • Эти же клавиши будут вызывать последующие значения для переопределения исходного массива
  • Новые ключи на последующих массивах будут созданы на исходном массиве

Это означает, что ассоциация ключей => сохраняется и не вставлены повторяющиеся ключи.

Я использую оболочку вокруг array_merge для рассмотрения комментария SeanWM о нулевых массивах; Я также иногда хочу избавиться от дубликатов. Я также, как правило, хочу объединить один массив в другой, а не создавать новый массив. Это заканчивается как:

 /** * Merge two arrays - but if one is blank or not an array, return the other. * @param $a array First array, into which the second array will be merged * @param $b array Second array, with the data to be merged * @param $unique boolean If true, remove duplicate values before returning */ function arrayMerge(&$a, $b, $unique = false) { if (empty($b)) { return; // No changes to be made to $a } if (empty($a)) { $a = $b; return; } $a = array_merge($a, $b); if ($unique) { $a = array_unique($a); } } 

Я наткнулся на этот вопрос, пытаясь определить чистый способ объединения двух массивов.

Я пытался присоединиться к двум различным таблицам, у которых не было отношений друг с другом.

Это то, что я придумал для PDO Query, соединяющего две таблицы. Сэмюэл Кук определил решение для меня с array_merge() +1 к нему.

  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM ".databaseTbl_Residential_Prospects.""; $ResidentialData = $pdo->prepare($sql); $ResidentialData->execute(array($lapi)); $ResidentialProspects = $ResidentialData->fetchAll(PDO::FETCH_ASSOC); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "SELECT * FROM ".databaseTbl_Commercial_Prospects.""; $CommercialData = $pdo->prepare($sql); $CommercialData->execute(array($lapi)); $CommercialProspects = $CommercialData->fetchAll(PDO::FETCH_ASSOC); $Prospects = array_merge($ResidentialProspects,$CommercialProspects); echo '<pre>'; var_dump($Prospects); echo '</pre>'; 

Может быть, это поможет кому-то другому.