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

如何将一维数组中重复出现的日期值替换为空字符串?

解决日期数组重复项替换为空字符串的问题

你可以通过跟踪已保留的日期来实现需求:只保留每个日期的第一次出现,后续重复的全部替换为空字符串。

完整代码实现

$dateann = ['2024-08-16', '2024-08-11', '2024-08-16', '2024-09-16'];
$period = CarbonPeriod::between('2024-08-01', '2024-08-31');
$days = [];
foreach ($period as $date) {
    $days[] = $date->format('Y-m-d');
}
$array_dates = array_merge($dateann, $days);

// 处理重复日期:保留第一次出现,后续重复项替换为空
$seen = [];
foreach ($array_dates as &$date) {
    if (in_array($date, $seen)) {
        $date = '';
    } else {
        $seen[] = $date;
    }
}
unset($date); // 释放引用,避免后续变量污染

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

代码说明

  1. 跟踪已处理日期:用$seen数组记录已经保留过的日期,遍历原数组时做判断:
    • 若当前日期未被记录过,保留原日期并加入$seen标记
    • 若已存在,则将该位置的值替换为空字符串
  2. 直接修改原数组:使用&$date引用遍历,无需额外创建新数组,节省内存
  3. 释放引用:遍历结束后unset($date),防止后续变量被意外修改

效果验证

运行后会输出你期望的结果:

array: [
    0 => "2024-08-16"
    1 => "2024-08-11"
    2 => ""
    3 => "2024-09-16"
    4 => "2024-08-01"
    5 => "2024-08-02"
    6 => "2024-08-03"
    7 => "2024-08-04"
    8 => "2024-08-05"
    9 => "2024-08-06"
    10 => "2024-08-07"
    11 => "2024-08-08"
    12 => "2024-08-09"
    13 => "2024-08-10"
    14 => ""
    15 => "2024-08-12"
    16 => "2024-08-13"
    17 => "2024-08-14"
    18 => "2024-08-15"
    19 => ""
    20 => "2024-08-17"
    21 => "2024-08-18"
    22 => "2024-08-19"
    23 => "2024-08-20"
    24 => "2024-08-21"
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:53:14