PHP:打破嵌套循环

我有嵌套循环的问题。 我有多个post,每个post都有多个图片。

我想从所有post中总共获得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; } } } 

与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更可读

使用一个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++]; .. } } } ?>