У меня проблема с вложенным циклом. У меня несколько сообщений, и у каждого сообщения есть несколько изображений.
Я хочу получить всего 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++]; .. } } } ?>