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

如何按时间顺序列出多维数组内的时间并获取对应关联ID信息

解决方案

核心思路

  • 首先将多层嵌套的多维数组扁平化,提取每一个有效时间点对应的professional_id、local_id、所属日期、时间信息
  • 对提取后的所有时间条目按完整时间戳升序排序,即可得到按时间顺序排列的列表
  • 渲染时间选项时将关联字段绑定到选项属性,选中时直接读取对应属性即可获取所需信息

实现代码(PHP)

// 假设你的原始数组存在 $originArray 变量中
$flatTimeList = [];

// 遍历所有专业人员
foreach ($originArray['profissional_id'] as $professionalId => $professionalData) {
    // 遍历该专业人员下的所有地点
    foreach ($professionalData['local_id'] as $localId => $dateList) {
        // 遍历该地点下的所有日期
        foreach ($dateList as $date => $timeList) {
            // 跳过空的时间列表
            if (empty($timeList)) continue;
            // 遍历该日期下的所有时间
            foreach ($timeList as $time) {
                // 跳过空的时间值
                if (empty($time)) continue;
                $fullDatetime = $date . ' ' . $time;
                $flatTimeList[] = [
                    'datetime' => $fullDatetime,
                    'timestamp' => strtotime($fullDatetime),
                    'professional_id' => $professionalId,
                    'local_id' => $localId,
                    'date' => $date,
                    'time' => $time
                ];
            }
        }
    }
}

// 按时间戳升序排序
usort($flatTimeList, function ($a, $b) {
    return $a['timestamp'] - $b['timestamp'];
});

// 现在 $flatTimeList 就是已经按时间顺序排列的列表,可直接用于渲染输出
print_r($flatTimeList);

前端选中取值示例

如果需要在Web页面中选择时间,可以在渲染时将关联字段绑定到DOM属性,选中时直接读取:

<select id="timePicker">
    <?php foreach ($flatTimeList as $item): ?>
    <option 
        value="<?php echo $item['datetime'] ?>"
        data-professional-id="<?php echo $item['professional_id'] ?>"
        data-local-id="<?php echo $item['local_id'] ?>"
        data-date="<?php echo $item['date'] ?>"
    >
        <?php echo $item['datetime'] ?>
    </option>
    <?php endforeach; ?>
</select>

<script>
document.getElementById('timePicker').addEventListener('change', function() {
    const selectedOption = this.options[this.selectedIndex];
    const professionalId = selectedOption.dataset.professionalId;
    const localId = selectedOption.dataset.localId;
    const date = selectedOption.dataset.date;
    // 后续业务逻辑
    console.log(professionalId, localId, date);
});
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:45:04