Объедините дни, когда часы работы похожи - PullRequest
11 голосов
/ 06 мая 2011

Как я могу написать функцию в PHP (с CodeIgniter), чтобы объединить дни с одинаковыми часами открытия магазина вместе.Например, если у нас есть:

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 ..

1 Ответ

11 голосов
/ 06 мая 2011
<?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;
    }
}

образец кодовой панели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...