반응형
중첩 루프 차단
중첩 루프에 문제가 있습니다.저는 여러 개의 게시물이 있고, 각 게시물마다 여러 개의 이미지가 있습니다.
모든 게시물에서 총 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
반응형
'programing' 카테고리의 다른 글
업데이트 부분에서 새 값과 이전 값을 모두 사용할 수 있도록 UPSERT를 수행하는 방법 (0) | 2023.01.06 |
---|---|
AttributeError: 'module' 개체에 속성이 없습니다. (0) | 2023.01.06 |
비어 있지 않은 폴더를 삭제/삭제하려면 어떻게 해야 합니까? (0) | 2023.01.05 |
PHP CURL OPT_SSL_VERIFYPEER 무시 (0) | 2023.01.05 |
MySQL - 열의 문자 바꾸기 (0) | 2023.01.05 |