PHP将两个关联数组合并成一个数组

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

我需要一个新的arrays,所有在一起,即它会

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

做这个的最好方式是什么?

对不起,我忘了,ID将永远不会匹配对方,但从技术上来说,名字可能不会,而且都需要列在一个数组中。 我看着array_merge,但不知道这是否是最好的方式来做到这一点。 另外,你将如何testing这个?

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_merge中使用了一个包装来处理SeanWM关于null数组的注释; 我也有时想摆脱重复。 我通常也想将一个数组合并到另一个数组中,而不是创build一个新的数组。 最终结果如下:

 /** * 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); } } 

另一个select是array_replace ,其中一个原始数组被其他数组修改:

  • 相同的键会导致后续值覆盖原始数组
  • 后续arrays上的新键将在原始arrays上创build

这意味着key =>值关联被保留,并且没有重复的键被插入。

我偶然发现了这个问题,试图找出一个干净的方式来join两个assoc数组。

我试图join两个彼此没有关系的表格。

这是我想出的PDO查询join两个表。 塞缪尔·库克是用他的array_merge() +1为我确定了一个解决scheme。

  $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>'; 

也许这会帮助别人。