1

我尝试使用嵌套的 foreach 循环创建一个列表。第一个循环是循环一些数字,第二个循环是循环日期。我想写一个数字到一个日期。所以还有另一个功能可以检查。但结果是数字多次写入日期。

Out 是这样的:

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 回答