0

営業日にのみ実行することを目的としたPHPの日付スケジュール機能があります。現時点で私が持っているコードは、すべての曜日のスケジュールを生成しているため、while ステートメントが機能していないようで、その理由がわかりません。

私は学生なので、この種のことはあまり経験していません。これが私がこれまでに持っているコードです:

public static function generate_date_schedule($tasksperdayschedule, $startdate) {
    $schedule = [];

    $date = clone $startdate;

    foreach ($tasksperdayschedule as $numberoftasks) {
        $day = (int)$date->format('N');

        // Skip weekend days.
        while ($day > 5) {
            $date->add(new DateInterval('P1D'));
            $day = (int)$date->format('N');
        }

        $schedule[$date->format(self::DATE_FORMAT)] = $numberoftasks;

        $date->add(new DateInterval('P1D'));
    }

   return $schedule;

それはおそらく私が見逃している非常に小さなものですが、何か助けていただければ幸いです! ありがとう

4

1 に答える 1

1

単純な論理エラーだと思います。

ループ内でwhile更新$dayしていますが、foreachループは引き続き残りのコードを実行します。

さらに良いことに、次の方法でwhileループを回避できます。

if($day > 5)
    continue;
于 2015-08-05T10:45:04.320 に答える