合并营业时间相似的日子 [英] Combine days where opening hours are similar

查看:25
本文介绍了合并营业时间相似的日子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何在 PHP(使用 CodeIgniter)中编写一个函数来将商店营业时间相似的日子合并在一起.例如,如果我们有:

How might I code a function in PHP (with CodeIgniter) to merge days with similar opening hours of a store together. For example, if we have:

Mon 9am-5pm
Tue 9am-5pm
Wed 9am-5pm
Thu 9am-5pm
Fri 9am-5pm
Sat 9am-7pm
Sun 9am-7pm

我希望将代码简化为:

Mon-Fri 9am-5pm
Sat-Sun 9am-7pm

如果没有一长串 if/else 或 case ifs,我该怎么做?我正在使用 CodeIgniter..

How do I do this without a long list of if/else or case ifs? I'm using CodeIgniter..

推荐答案

<?php
$openHours = array(
    'Mon' => '9am-5pm',
    'Tue' => '9am-5pm',
    'Wed' => '9am-9pm',
    'Thu' => '9am-5pm',
    'Fri' => '9am-5pm',
    'Sat' => '9am-7pm',
    'Sun' => '9am-7pm'
);

$summaries = array();
foreach ($openHours as $day => $hours) {
    if (count($summaries) === 0) {
        $current = false;
    } else {
        $current = &$summaries[count($summaries) - 1];
    }
    if ($current === false || $current['hours'] !== $hours) {
        $summaries[] = array('hours' => $hours, 'days' => array($day));
    } else {
        $current['days'][] = $day;
    }
}

foreach ($summaries as $summary) {
    if (count($summary['days']) === 1) {
        echo reset($summary['days']) . ' ' . $summary['hours'] . PHP_EOL;
    } else {
        echo reset($summary['days']) . '-' . end($summary['days']) . ' ' . $summary['hours'] . PHP_EOL;
    }
}

键盘示例

这篇关于合并营业时间相似的日子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆