$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>';
Может быть, это поможет кому-то другому.