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

PHP合并数组:键相同时保留值更大元素并保留原键

PHP合并数组:键名相同时保留value更大的元素(结合array_replace与回调实现)

解决方案代码

$array1 = [
    4 => [
        'name' => 'John',
        'value' => '5',
    ],
    5 => [
        'name' => 'Michael',
        'value' => '4',
    ],
    6 => [
        'name' => 'Steve',
        'value' => '7',
    ],
];

$array2 = [
    5 => [
        'name' => 'Peter',
        'value' => '6',
    ],
    6 => [
        'name' => 'Glen',
        'value' => '3',
    ],
];

// 过滤array2,仅保留value大于array1对应键的元素
$filteredArray2 = array_filter($array2, function($item, $key) use ($array1) {
    return isset($array1[$key]) 
        ? (int)$item['value'] > (int)$array1[$key]['value'] 
        : true;
}, ARRAY_FILTER_USE_BOTH);

// 合并数组,自动保留value更大的元素与原键名
$result = array_replace($array1, $filteredArray2);

print_r($result);

逻辑说明

  1. 过滤数组2:使用array_filter搭配回调函数,筛选出$array2中满足以下条件的元素:
    • 如果$array1中存在相同键,仅保留value数值更大的元素(转成整数避免字符串比较误差);
    • 如果$array1中无对应键,直接保留该元素(兼容两数组键不重叠的场景)。
  2. 合并数组:通过array_replace将过滤后的$array2与$array1合并,该函数会保留原数组键名,并用后续数组的元素替换前序数组中相同键的元素,最终得到键名相同时保留value更大元素的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:42:48