PHP에서 루프를 종료할 수 있습니까?
PHP 코드를 체크하는 루프가 있습니다.원래 이렇게 생겼는데...
foreach($results as $result) {
if (!$condition) {
$halt = true;
ErrorHandler::addErrorToStack('Unexpected result.');
}
doSomething();
}
if (!$halt) {
// do what I want cos I know there was no error
}
이것은 잘 작동하지만, 한 번의 오류에도 불구하고 여전히 반복되고 있습니다.루프를 벗어날 수 있는 방법이 있나요?
브레이크 스테이트먼트를 찾고 있습니다.
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
while (list(, $val) = each($arr)) {
if ($val == 'stop') {
break; /* You could also write 'break 1;' here. */
}
echo "$val<br />\n";
}
다른 투고에 기재되어 있듯이 break 키워드를 사용할 수 있습니다.힌트되었지만 설명되지 않은 한 가지는 키워드가 PHP에 몇 개의 레벨을 분할해야 하는지 알려주는 숫자 값을 취할 수 있다는 것입니다.
예를 들어, 정보를 검색하려고 서로 중첩된 3개의 포어치 루프가 있는 경우, "break 3"을 실행하여 중첩된 3개의 루프를 모두 제거할 수 있습니다.이는 'for', 'foreach', 'while', 'do-while' 또는 'switch' 구조에 적용됩니다.
$person = "Rasmus Lerdorf";
$found = false;
foreach($organization as $oKey=>$department)
{
foreach($department as $dKey=>$group)
{
foreach($group as $gKey=>$employee)
{
if ($employee['fullname'] == $person)
{
$found = true;
break 3;
}
} // group
} // department
} // organization
break;루프가 사라집니다.
continue;이 조건이 true인 한 루프의 나머지 부분에서는 임의의 코드를 건너뛰고 다음 루프로 넘어갑니다.
break 키워드를 사용할 수 있습니다.
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
foreach ($arr as $val) {
if ($val == 'stop') {
break; /* You could also write 'break 1;' here. */
}
echo "$val<br />\n";
}
모두 좋은 답변이지만, 더 나은 코드 표준이라고 생각되는 것을 하나 더 제안하고 싶습니다.루프를 계속할지 여부를 나타내는 플래그를 루프 상태에서 사용할지 여부를 선택할 수 있습니다.break다 같이.
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
$length = count($arr);
$found = false;
for ($i = 0; $i < $length && !$found; $i++) {
$val = $arr[$i];
if ($val == 'stop') {
$found = true; // this will cause the code to
// stop looping the next time
// the condition is checked
}
echo "$val<br />\n";
}
이것은, 다음의 범위에 의존하지 않기 때문에, 보다 좋은 코드 프랙티스라고 생각합니다.break사용됩니다.대신 특정 루프를 끊을지 여부를 나타내는 변수를 정의합니다.이는 중첩되거나 순차적이지 않은 루프가 많을 때 유용합니다.
언급URL : https://stackoverflow.com/questions/588892/can-you-exit-a-loop-in-php
'source' 카테고리의 다른 글
| "java.lang"을 다루는 방법Out Of Memory Error: Java 힙 공간" 오류입니까? (0) | 2022.10.18 |
|---|---|
| PHP 세션이 하위 도메인으로 전달되도록 허용 (0) | 2022.10.18 |
| MariaDB/MySQL에서 전체 텍스트 검색을 위해 문자열을 이스케이프하는 방법 (0) | 2022.10.18 |
| 함수 호출의 타임아웃 (0) | 2022.10.18 |
| JSF 1.2에서JSF 2.0으로의 이행 (0) | 2022.10.18 |