簡體   English   中英

嵌套的foreach循環,在循環內中斷

[英]Nested foreach loop, break inside loop

我嘗試用嵌套的foreach循環創建一個列表。 第一個循環是循環一些數字,第二個循環是循環日期。 我想在一個日期上寫一個數字。 因此,還有另一個功能可以進行檢查。 但是結果是數字多次寫在日期上。

出來是這樣的:

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);
}

我認為內部循環不會中斷。

break; 應該打破內在的foreach循環!
我看到這種行為的唯一原因是在數組中重復數字!(例如$numers=array(5,5,5,6,6);
嘗試插入: $numbers=array_unique($numbers); 在外部foreach循環之前
如果您需要同時中斷兩個循環(內部和外部),請編寫break 2; 而不是break;

您可以檢查以下內容嗎?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM