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

如何在1数组PHP中检查多个序列,php,arrays,sequence,days,Php,Arrays,Sequence,Days,我一直在为我的问题寻找解决方案,但找不到,所以我想我会问。 我目前有一个数组,其中包含一家公司开业的天数,从这几天起我就有了数值 因此,如果一家公司每周7天营业,我会: $days= array('0','1','2','3','4','5','6'); 如果公司周四关闭,阵列将更改为: $days= array('0','1','2','4','5','6');' 现在,我的最终目标是在所有连续的日子里,得到第一天和最后一天。 在第一个例子中是0-6 第二个例子(因为公司周四才关门)我想展

我一直在为我的问题寻找解决方案,但找不到,所以我想我会问。 我目前有一个数组,其中包含一家公司开业的天数,从这几天起我就有了数值

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

$days= array('0','1','2','3','4','5','6');
如果公司周四关闭,阵列将更改为:

$days= array('0','1','2','4','5','6');'
现在,我的最终目标是在所有连续的日子里,得到第一天和最后一天。 在第一个例子中是0-6

第二个例子(因为公司周四才关门)我想展示一下:周五周三,所以是4-2


有人对此有什么想法吗?因为我被卡住了。

您可以使用下面的代码,它可以在一个关闭日甚至多个关闭日工作

$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;

你想要结束日期(与“周一-周三,周五-周日”相反),这让你很难完成。您希望像
数组(0,2,4,6)
这样的东西返回什么?只需要天数分开的值0,2,4,6,那么在这种情况下,它应该给出
周一,周三,周五,周日
?或者
星期三、星期五、星期日和星期一
?或者什么?该功能的输入是什么?如果公司在2天内关闭怎么办?星期二和星期四?输出是什么?