2017-07-16 9 views
0

私の問題の解決策を探していましたが、見つけられなかったので、私は質問したいと思いました。 私は現在、会社が開かれた日数を含む配列を持っています。これらの日から私は数値を持っています。1配列内で複数の配列をチェックする方法PHP

だから、会社は私が持っていると思います週7日開いている場合:

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

会社が木曜日に閉じている場合、アレイは、に変更になります。今

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

私の最終目標すべての連続日の最初と最後の日を取得することです。 最初の例では0-6です。

2番目の例(会社は木曜日のみ閉鎖されているため)は、金曜日〜水曜日に表示したいので、4-2となります。

誰でもこれに関するアイデアはありますか?私はかなり詰まっているので。

+0

(「月曜日〜水曜日、金曜日〜日曜日」とは対照的に)日付を囲むことを希望します。あなたは 'array(0、2、4、6)'のようなものを返そうとしますか? –

+0

ちょうど0日、2日、4日、6日を別々に値する –

+0

その場合、「月曜日、水曜日、金曜日、日曜日」にする必要がありますか?または、水曜日、金曜日、日曜日 - 月曜日?または何? –

答えて

0

以下のコードを使用することができ、1日の休業日または複数の休業日にも使用できます。

$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; 
関連する問題