1

foreach ループがネストされたリストを作成しようとしています。最初のループはいくつかの数値をループしており、2 番目のループは日付をループしています。1つの日付に1つの数字を書きたい。そのため、それを確認する別の関数があります。しかし、その結果、数値は日付に複数回書き込まれます。

アウトはそのようなものです:

number 5 is on 2013.01.15;
number 5 is on 2013.01.16;
number 5 is on 2013.01.17;
number 6 is on 2013.01.15;
number 6 is on 2013.01.17;

コード :

function create_event($numbers,$available_dates) {
  foreach($numbers as $number) {
    foreach($avaliable_dates as $av_date) {

      $date_check= dateCheck($av_date,$number);

      if ($date_check == 0) {
        echo "number ".$number." is on ".$av_date;
        break;
      } else {
        $send_again[] = $number;
      }

    }
  }
  create_event($send_again,$avaliable_dates);
}

内部ループは壊れていないと思います。

4

2 に答える 2

5

break;内側の foreach ループを破る必要があります。
私が見るこのような動作の唯一の理由は、あなたの配列で数字を繰り返すことです!(例$numers=array(5,5,5,6,6);)
挿入してみてください:$numbers=array_unique($numbers);外側の foreach ループの前に
両方のループ (内側と外側) を中断する必要がある場合は、break 2;代わりに書き込みますbreak;

于 2013-01-15T15:59:38.373 に答える
1

次のようなことを確認できますか。

function create_event($numbers,$available_dates) {
    foreach ($numbers as $number) {
        foreach ($available_dates as &$av_date) {
            if (dateCheck($av_date, $number) == 0) {
                unset($av_date);
                break;
            }
        }
    }
}
于 2013-01-15T16:05:11.623 に答える