Combine days where opening hours are similar

前端 未结 2 1183
Happy的楠姐
Happy的楠姐 2020-12-14 04:15

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          


        
2条回答
  •  既然无缘
    2020-12-14 04:38

     '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;
        }
    }
    

    codepad sample

提交回复
热议问题