我尝试使用嵌套的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);
}
我认为内部循环不会中断。
答案 0 :(得分:4)
你的break;
应该打破内在的foreach循环!
我看到这种行为的唯一原因是你在数组中重复数字!(例如$numers=array(5,5,5,6,6);
)
尝试在外部foreach循环之前插入$numbers=array_unique($numbers);
如果你需要打破两个循环(内部和外部),请写break 2;
而不是break;
答案 1 :(得分: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;
}
}
}
}