PHP中如何向同键名的多维数组添加对应值
如何将$array2的键值合并到$array1的对应子数组中?
嘿,要实现这个需求其实挺简单的,我给你分享两种常用的方法,你可以根据自己的场景来选:
方法一:循环遍历(直观易懂,兼容性强)
这是最容易理解的方式,逐个处理$array2里的键值对,把值追加到$array1对应键的子数组末尾:
<?php $array1 = array ( "John" => array("10" , "Holland"), "Cindy" => array("20" , "Sweden"), ); $array2 = array ( "John" => "Amsterdam", "Cindy" => "Stockholm", ); // 先复制$array1到$array3,避免修改原数组(如果不需要保留原数组,直接操作$array1也行) $array3 = $array1; // 遍历$array2的每个键值对 foreach ($array2 as $name => $city) { // 安全检查:确保$array3里存在这个键,并且对应的值是数组 if (isset($array3[$name]) && is_array($array3[$name])) { $array3[$name][] = $city; } } // 输出结果看看 print_r($array3); ?>
这样处理后,$array3就完全是你想要的结构啦,而且还保留了原$array1的内容,很灵活。
方法二:用array_map函数(代码简洁)
如果你的$array1和$array2的键完全对应(数量、顺序都一致),可以用array_map来实现更简洁的写法:
<?php $array1 = array ( "John" => array("10" , "Holland"), "Cindy" => array("20" , "Sweden"), ); $array2 = array ( "John" => "Amsterdam", "Cindy" => "Stockholm", ); $array3 = array_map(function($subArray, $city) { // 把城市名追加到子数组里 $subArray[] = $city; return $subArray; }, $array1, $array2); print_r($array3); ?>
这个方法一行核心代码就能搞定,但要注意前提是两个数组的键必须一一对应,不然结果可能不符合预期哦。
内容的提问来源于stack exchange,提问作者Shamss Zaidan
相关产品推荐
相关产品推荐

