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

如何判断数组元素是否存在于另一组数组中并生成对应数据数组

实现按日期匹配生成浏览次数数据数组

现有代码与数据

生成最近7天日期的$labels数组

$now = new \DateTime();
$startDate = $now->modify('-6 day');
$labels = [];
$data = [];
for ($i = 0; $i <= 6; $i++) {
    $day =  $startDate->modify('+1 day');
    $labels[] = $day->format('Y-m-d');
}

$labels输出结果:

$labels = array:7 [▼
  0 => "2023-07-05"
  1 => "2023-07-06"
  2 => "2023-07-07"
  3 => "2023-07-08"
  4 => "2023-07-09"
  5 => "2023-07-10"
  6 => "2023-07-11"
]

查询返回的浏览次数结果$result

$result = array:2 [▼
  0 => array:2 [▶
    "numberViews" => 20
    "dayDate" => "2023-07-10"
  ]
  1 => array:2 [▶
    "numberViews" => 32
    "dayDate" => "2023-07-11"
  ]
]

需要实现的功能

检查$labels中的每个日期是否存在于$result数组中,不存在则对应值设为0,最终生成如下格式的$data数组:

$data = [0,0,0,0,0,20,32]

解决方案

先将$result转换为以日期为键的关联数组,再遍历$labels匹配取值,代码如下:

// 转换$result为日期映射浏览次数的关联数组
$viewMap = [];
foreach ($result as $item) {
    $viewMap[$item['dayDate']] = $item['numberViews'];
}

// 遍历$labels生成目标$data数组
$data = [];
foreach ($labels as $date) {
    $data[] = $viewMap[$date] ?? 0;
}

代码说明

  • 将$result转为关联数组后,可通过日期直接查找对应浏览次数,把每次查找的时间复杂度从O(n)降为O(1),提升处理效率
  • 使用PHP7+的??空合并运算符,简洁处理日期不存在时赋值为0的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:20:11