破坏嵌套循环

我有嵌套循环的问题。我有多个职位,每个职位有多个图像数量。

我想得到总共5张图片从所有职位。因此,我使用嵌套循环获取图像,并希望在数字达到5时中断循环。下面的代码将返回图像,但似乎不会中断循环。

foreach($query->posts as $post){
if ($images = get_children(array(
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'image'))
){
$i = 0;
foreach( $images as $image ) {
..
//break the loop?
if (++$i == 5) break;
}
}
}
57197 次浏览

与 C/C + + 等其他语言不同,在 PHP 中可以使用可选的 break 参数,如下所示:

break 2;

在这种情况下,如果有两个循环:

while(...) {
while(...) {
// do
// something


break 2; // skip both
}
}

break 2将跳过两个 while 循环。

医生: http://php.net/manual/en/control-structures.break.php

这使得跳过嵌套循环比使用其他语言的 goto更具可读性

使用 while 循环

<?php
$count = $i = 0;
while ($count<5 && $query->posts[$i]) {
$j = 0;
$post = $query->posts[$i++];
if ($images = get_children(array(
'post_parent' => $post->ID,
'post_type' => 'attachment',
'post_mime_type' => 'image'))
){
while ($count < 5 && $images[$j]) {
$count++;
$image = $images[$j++];
..
}
}
}
?>