PHP如何将多时间段数组处理为最早开始到最晚结束的营业时间字符串?
PHP代码修改方案
你当前的需求是将多段营业时间合并为「最早开始时间-最晚结束时间」的整体格式,修改后的代码如下:
// 兼容无营业时间的场景 if (empty($ranges)) { return __('今日营业时间:暂不营业', 'example'); } // 提取所有时段的开始、结束时间,取极值 $startTimes = array_column($ranges, 'from'); $endTimes = array_column($ranges, 'to'); $earliestStart = min($startTimes); $latestEnd = max($endTimes); // 格式化时间并拼接 $businessHours = $this->format_time($earliestStart) . ' - ' . $this->format_time($latestEnd); // 输出符合要求的格式 return sprintf( '%s%s。', __('今日营业时间:', 'example'), $businessHours );
修改说明
- 移除了原代码中生成所有时段字符串的
array_map逻辑,改用array_column批量提取所有时段的开始、结束时间 - 通过
min()和max()函数分别获取全天最早的开门时间、最晚的打烊时间,直接拼接为完整营业时间 - 调整了输出模板,匹配你需要的「今日营业时间:x:x - x:x。」的格式,外层你可以直接用
<p>标签包裹最终返回值即可 - 新增了空营业时间的兼容逻辑,避免数组为空时报错
- 原代码开头冗余的
$start、$end变量定义可以直接删除
内容的提问来源于stack exchange,提问作者sukkie
相关产品推荐
相关产品推荐

