如何将扁平关联数组与关联行索引数组合并为扁平关联数组
How to Merge These Two Arrays in PHP
嘿,我看你需要把一个一维关联数组和一个包含多个关联子数组的二维数组合并成一个单一的一维关联数组,对吧?刚好PHP里有几种简单的实现方式,我给你详细说说:
你的原始数组
首先先明确你要合并的两个数组:
第一个一维数组:
$array1 = [ 'E1' => '#43', 'B3' => 'Onur KAYA', 'B4' => '0555555555', 'B5' => 'demo@gmail.com', 'E3' => '1', 'E4' => '2017-12-24 14:31:11', 'E5' => '2018-05-26 15:17:48', 'B7' => '2018-05-16 15:33:06', 'B8' => 'Taslak', 'B9' => '2018-10-08 - 2019-03-11', 'B10' => '4,7363 TL', 'B11' => '71.708 TL ($15,140 )', 'E7' => 'Amerika / Kaliforniya', 'E8' => 'Okul / Kampüs', 'E9' => 'Genel Akademik Sömestir - 5 ay / Sabit Tarihli', 'E10' => 'indirim kuponu - 33.376 TL ($7,570 )', 'E11' => '35.854 TL ($7,570 )', 'C12' => '2.368 TL ($500 )', 'F12' => '35.854 TL ($7,570 )' ];
第二个二维数组(每个元素是关联数组):
$array2 = [ ['A15' => 'Kurs Ücreti (Genel Akademik Sömestir - 5 ay)', 'D15' => '22 Hafta', 'E15' => '$8,200', 'F15' => '$8,200'], ['A16' => 'Konaklama Ücreti (Aile Yanı İki Kişilik - 14 öğün/hafta (AKADEMİK SÖMESTİR 5 AY - 22 HAFTAYA KADAR))', 'D16' => '22 Hafta', 'E16' => '$4,695', 'F16' => '$4,695'], ['A17' => 'Transfer (Oakland Havaalanı\'nden Transfer Hizmeti)', 'D17' => 'Tek yön', 'E17' => '$145', 'F17' => '$145'], ['A18' => 'Kayıt Ücreti', 'D18' => '1', 'E18' => '$185', 'F18' => '$185'], ['A19' => 'Üniversite Yerleştirme Servisi - Temel', 'D19' => '1', 'E19' => '$175', 'F19' => '$175'], ['A20' => 'Seyahat ve Sağlık Sigortası', 'D20' => '22 Hafta', 'E20' => '$45', 'F20' => '$990'], ['A21' => 'Birebir Ders', 'D21' => '10', 'E21' => '$75', 'F21' => '$750'] ];
实现方法
方法1:循环遍历合并(直观易懂)
这种方法最直观,就是把第二个数组里的每个子数组依次合并到第一个数组中:
// 初始化结果数组为第一个数组 $result = $array1; // 遍历第二个数组的每个子数组,逐个合并 foreach ($array2 as $subArray) { $result = array_merge($result, $subArray); } // 输出合并后的结果 print_r($result);
方法2:用array_reduce简化代码(更简洁)
如果你不想写显式的循环,可以用array_reduce函数来一次性完成合并,代码更简洁:
$result = array_reduce($array2, function($carry, $item) { return array_merge($carry, $item); }, $array1); print_r($result);
方法3:PHP 7.4+ 箭头函数简化版
如果你的PHP版本是7.4及以上,还可以用箭头函数进一步简化代码:
$result = array_reduce($array2, fn($carry, $item) => array_merge($carry, $item), $array1); print_r($result);
说明
这些方法的核心都是利用array_merge()函数:它会把后面数组的键值对添加到前面的数组中。如果两个数组中有重复的键,后面的键值会覆盖前面的(不过你的例子里所有键都是唯一的,所以不用担心覆盖问题),最终得到的就是你想要的一维关联数组。
内容的提问来源于stack exchange,提问作者Onur KAYA
相关产品推荐
相关产品推荐

