我遇到嵌套循环问题。我有多个帖子,每个帖子都有多个图片。
我想从所有帖子中共获得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;
}
}
}
答案 0 :(得分:142)
与其他语言(如C / C ++)不同,在PHP中,您可以像这样使用可选的中断参数:
break 2;
在这种情况下,如果你有两个循环:
while(...) {
while(...) {
// do
// something
break 2; // skip both
}
}
break 2
将跳过两个while循环。
Doc:http://php.net/manual/en/control-structures.break.php
这使得跳过嵌套循环比使用其他语言的goto
更具可读性
答案 1 :(得分:3)
使用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++];
..
}
}
}
?>