PHP中如何将两个数组合并,将其中一个数组的元素添加到另一个数组的每个子数组末尾?
PHP数组合并:将数组$b元素添加到$a对应子数组末尾
很简单,我给你几个实用的解决方案,你可以根据自己的场景选择:
方法一:foreach循环(最直观易懂,推荐)
这是最容易理解和维护的方式,还能避免键不匹配的问题:
$a = array (1 => [ 1 => "a", 2 => "b", 3 => "c"], 2 => [ 1 => "d", 2 => "e", 3 => "f"], 3 => [ 1 => "g", 2 => "h", 3 => "i"]); $b = array (1 => "1", 2 => "2", 3 => "3"); // 遍历$b的每个键值对 foreach ($b as $key => $value) { // 先检查$a中是否存在对应键的子数组,防止报错 if (isset($a[$key])) { $a[$key][4] = $value; } } // 验证结果 print_r($a);
运行后就能得到你想要的数组结构,这个方法的好处是不管$a和$b的键是不是连续的,只要键对应就能正确添加元素。
方法二:array_map函数(简洁的函数式写法)
如果你的$a和$b的键是严格一一对应、顺序也完全一致的,可以用这个更简洁的写法:
$a = array (1 => [ 1 => "a", 2 => "b", 3 => "c"], 2 => [ 1 => "d", 2 => "e", 3 => "f"], 3 => [ 1 => "g", 2 => "h", 3 => "i"]); $b = array (1 => "1", 2 => "2", 3 => "3"); // 同时遍历两个数组的对应元素,处理后返回新数组 $a = array_map(function($subArray, $value) { $subArray[4] = $value; return $subArray; }, $a, $b); print_r($a);
⚠️ 注意:如果$a和$b的键不匹配(比如$a有键4但$b没有),array_map会按元素的索引顺序匹配,可能会出现错误的对应关系,所以这种方法只适合键完全对应的场景。
方法三:array_walk(直接修改原数组)
如果你不想重新赋值数组,想直接修改原$a的话,可以用array_walk:
$a = array (1 => [ 1 => "a", 2 => "b", 3 => "c"], 2 => [ 1 => "d", 2 => "e", 3 => "f"], 3 => [ 1 => "g", 2 => "h", 3 => "i"]); $b = array (1 => "1", 2 => "2", 3 => "3"); // 引用传参修改原数组的子数组,同时引入$b array_walk($a, function(&$subArray, $key) use ($b) { if (isset($b[$key])) { $subArray[4] = $b[$key]; } }); print_r($a);
这个方法通过&$subArray引用子数组,直接在原数组上修改,不需要重新赋值给$a。
内容的提问来源于stack exchange,提问作者David Solano Rojas
相关产品推荐
相关产品推荐

