You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP:如何基于键匹配将Array1的值追加到Array2子数组?

解决方案:按键匹配将值追加到子数组末尾

问题原因

array_merge($Array1, $Array2) 无法得到预期结果,是因为当两个数组存在相同的字符串键时,后数组的元素会覆盖前数组的同键元素。这里Array2的99、98键对应子数组,会直接覆盖Array1中同键的单个值,自然无法实现追加到子数组的效果。

正确实现代码

通过遍历数组,针对共同键将Array1的值追加到Array2的子数组末尾:

// 定义原始数组
$Array1 = [
    99 => 99,
    98 => 98
];

$Array2 = [
    99 => [1300, 1500, 1618, 2704, 1401, 1900, 1100, 4232, 4233],
    98 => [1400, 4802, 1601, 1603, 1100, 1900]
];

// 初始化最终数组为Array2的副本
$finalArray = $Array2;

// 遍历并追加对应值
foreach ($finalArray as $key => &$subArray) {
    // 检查当前键是否存在于Array1中
    if (isset($Array1[$key])) {
        // 将Array1的值追加到子数组末尾
        $subArray[] = $Array1[$key];
    }
}

// 输出结果
print_r($finalArray);

代码说明

  1. 先复制Array2到$finalArray,保留原有子数组结构;
  2. 使用引用&$subArray遍历,直接修改子数组内容,避免额外赋值操作;
  3. 通过isset()判断共同键,确保只处理存在匹配的项;
  4. 用$subArray[] = ...的方式追加值,比array_push()更简洁直观。

补充说明

如果需要处理Array1中存在但Array2中没有的键(将其转为单个元素的子数组),可以在遍历后添加以下逻辑:

// 处理Array1独有的键
foreach ($Array1 as $key => $value) {
    if (!isset($finalArray[$key])) {
        $finalArray[$key] = [$value];
    }
}

内容的提问来源于stack exchange,提问作者uzthegeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:27:30