PHP: разрыв вложенного цикла

У меня проблема с вложенным циклом. У меня несколько сообщений, и у каждого сообщения есть несколько изображений.

Я хочу получить всего 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 следующим образом:

 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++]; .. } } } ?>