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

PHP中按view_date匹配合并两个多维数组并替换t_view值

解决方案

步骤说明

  1. 预处理数组一:将数组一转换为以view_date为键、t_view为值的一维关联数组,提升后续日期匹配的查找效率。
  2. 遍历更新数组二:循环数组二的每一项,根据日期从预处理后的数组中获取对应t_view值(不存在则保留原0值),完成替换。

代码实现(PHP)

// 定义数组一
$array1 = [
    ['view_date' => '2022-09-10', 't_view' => 1],
    ['view_date' => '2022-09-11', 't_view' => 19]
];

// 定义数组二
$array2 = [
    ['view_date' => '2022-09-05', 't_view' => 0],
    ['view_date' => '2022-09-06', 't_view' => 0],
    ['view_date' => '2022-09-07', 't_view' => 0],
    ['view_date' => '2022-09-08', 't_view' => 0],
    ['view_date' => '2022-09-09', 't_view' => 0],
    ['view_date' => '2022-09-10', 't_view' => 0],
    ['view_date' => '2022-09-11', 't_view' => 0]
];

// 预处理数组一:转为日期=>t_view的关联数组
$viewMap = [];
foreach ($array1 as $item) {
    $viewMap[$item['view_date']] = $item['t_view'];
}

// 遍历更新数组二
foreach ($array2 as &$item) {
    if (isset($viewMap[$item['view_date']])) {
        $item['t_view'] = $viewMap[$item['view_date']];
    }
}
unset($item); // 释放引用,避免后续操作污染原数组

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

代码解释

  • 预处理后得到的$viewMap结构为['2022-09-10' => 1, '2022-09-11' => 19],将日期匹配的时间复杂度从嵌套循环的O(n*m)优化为O(n+m),大幅提升效率。
  • 遍历数组二时使用引用&$item,直接修改原数组元素,无需额外创建新数组占用内存。
  • 最后执行unset($item)销毁引用,防止后续对$item的意外修改影响数组二的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:15:27