如何在1个数组PHP中检查多个序列

时间:2017-07-16 10:04:43

标签: php arrays sequence days

我一直在为我的问题寻找解决办法,但找不到,所以我想我会问。 我目前有一个数组,其中包含公司开通的天数,从这些天开始我有数字值。

因此,如果一家公司每周7天开放,我会:

$days= array('0','1','2','3','4','5','6');

如果公司周四关闭,阵列将变为:

$days= array('0','1','2','4','5','6');'

现在我的最终目标是连续几天的第一天和最后一天。 所以在第一个例子中是0-6。

对于第二个例子(因为该公司仅在周四关闭)我想表明:周五至周三,所以这将是4-2。

对此有任何想法的人?因为我很困难。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码,它可以在单个休息日或甚至多个休息日工作。

$days= array('0','1','2','4','5','6');
$closed_days = range(1,max($days));   
$missing = array_diff($closed_days,$days);

$start_day = $days[0];
$end_day = $days[count($days) -1];

if(count($missing)>0){
    $first_key = key($missing);
    $next_key = $first_key+count($missing) - 1;
    if(count($missing) == 1){
        $next_key++;
    }
    $previous_key = $first_key;

    $start_day = $days[$next_key];
    $end_day = $days[$previous_key];
}

echo $start_day.'-'.$end_day;