[英]Nested foreach loop, break inside loop
I try to create a list with nested foreach loop. 我尝试用嵌套的foreach循环创建一个列表。 First loop is looping some numbers, second loop is looping dates.
第一个循环是循环一些数字,第二个循环是循环日期。 I want to write one number to one date.
我想在一个日期上写一个数字。 So there is a another function to check that.
因此,还有另一个功能可以进行检查。 But the result is numbers writes on dates multiple times.
但是结果是数字多次写在日期上。
Out is something like that : 出来是这样的:
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;
The code : 编码 :
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);
}
I think inside loop is not break. 我认为内部循环不会中断。
Your break;
你
break;
should break inner foreach loop! 应该打破内在的foreach循环!
The only reason for such behavior I see is repeating numbers in you array!(Eg $numers=array(5,5,5,6,6);
) 我看到这种行为的唯一原因是在数组中重复数字!(例如
$numers=array(5,5,5,6,6);
)
Try to insert: $numbers=array_unique($numbers);
尝试插入:
$numbers=array_unique($numbers);
before your outer foreach loop 在外部foreach循环之前
If you need to break both loops(inner and outer) write break 2;
如果您需要同时中断两个循环(内部和外部),请编写
break 2;
instead of break;
而不是
break;
Can you check something like this: 您可以检查以下内容吗?
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.