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

将PHP多维营业时间数组转换为按日展示的HTML表格

PHP多维数组转营业时间HTML表格方案

给定如下PHP多维数组,需要将其中的营业时间数据展示为HTML表格,要求每周的每一天对应其营业时间段数生成行(多段时间则星期单元格跨行),无营业时间时显示“休息”。

$times = [
    "opening_time" => [
        "monday" => ["10:30 am", "6:30 pm"],
        "tuesday" => ["12:30 pm"],
        "wednesday" => ["4:30 pm"],
        "thursday" => ["2:30 pm"],
        "friday" => ["4:00 pm"],
        "saturday" => ["6:00 am"],
        "sunday" => []
    ],
    "closing_time" => [
        "monday" => ["6:00 pm", "10:30 pm"],
        "tuesday" => ["7:00 pm"],
        "wednesday" => ["10:00 pm"],
        "thursday" => ["6:30 pm"],
        "friday" => ["11:00 pm"],
        "saturday" => ["6:00 pm"],
        "sunday" => []
    ]
];

解决方案代码

<?php
$times = [
    "opening_time" => [
        "monday" => ["10:30 am", "6:30 pm"],
        "tuesday" => ["12:30 pm"],
        "wednesday" => ["4:30 pm"],
        "thursday" => ["2:30 pm"],
        "friday" => ["4:00 pm"],
        "saturday" => ["6:00 am"],
        "sunday" => []
    ],
    "closing_time" => [
        "monday" => ["6:00 pm", "10:30 pm"],
        "tuesday" => ["7:00 pm"],
        "wednesday" => ["10:00 pm"],
        "thursday" => ["6:30 pm"],
        "friday" => ["11:00 pm"],
        "saturday" => ["6:00 pm"],
        "sunday" => []
    ]
];

// 星期英文转中文映射
$weekDays = [
    'monday' => '星期一',
    'tuesday' => '星期二',
    'wednesday' => '星期三',
    'thursday' => '星期四',
    'friday' => '星期五',
    'saturday' => '星期六',
    'sunday' => '星期日'
];

// 生成HTML表格
echo '<table border="1" cellpadding="8" cellspacing="0">';
echo '<tr><th>星期</th><th>开门时间</th><th>关门时间</th></tr>';

foreach ($weekDays as $enDay => $cnDay) {
    $openTimes = $times['opening_time'][$enDay];
    $closeTimes = $times['closing_time'][$enDay];
    $segmentCount = max(count($openTimes), count($closeTimes));
    
    if ($segmentCount === 0) {
        // 当天无营业时间,显示休息
        echo "<tr>";
        echo "<td>{$cnDay}</td>";
        echo "<td colspan='2'>休息</td>";
        echo "</tr>";
    } else {
        // 遍历每一段营业时间
        for ($i = 0; $i < $segmentCount; $i++) {
            echo "<tr>";
            // 仅第一行显示星期并设置跨行
            if ($i === 0) {
                echo "<td rowspan='{$segmentCount}'>{$cnDay}</td>";
            }
            // 取出对应时间段的开门、关门时间,不存在则为空
            $open = $openTimes[$i] ?? '';
            $close = $closeTimes[$i] ?? '';
            echo "<td>{$open}</td>";
            echo "<td>{$close}</td>";
            echo "</tr>";
        }
    }
}

echo '</table>';
?>

代码说明

  • 定义$weekDays数组实现星期英文到中文的转换,适配中文阅读场景
  • 遍历每一天时,计算当天的营业时间段数(取开门、关门时间数组长度的最大值)
  • 无营业时间时,直接生成一行显示“休息”
  • 有多段营业时间时,第一行的星期单元格通过rowspan属性跨行,后续行仅填充对应时间段的开门、关门时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:25:35