programing

중첩 루프 차단

randomtip 2023. 1. 5. 23:59
반응형

중첩 루프 차단

중첩 루프에 문제가 있습니다.저는 여러 개의 게시물이 있고, 각 게시물마다 여러 개의 이미지가 있습니다.

모든 게시물에서 총 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;

이 경우 다음과 같은 2개의 루프가 있습니다.

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

      break 2; // skip both
   }
}

break 2루프 중에는 둘 다 건너뜁니다.

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

언급URL : https://stackoverflow.com/questions/11609532/breaking-the-nested-loop

반응형