PHP로 외부 루프를 어떻게 끊을 수 있습니까?


124

PHP에서 외부 for / foreach 루프를 끊고 싶습니다.

이 작업은 다음과 같이 ActionScript에서 수행 할 수 있습니다.

top : for each(var i:MovieClip in movieClipArray)
{
    for each(var j:String in nameArray)
    {
        if(i.name == j) break top;
    }
}

PHP에 상응하는 것은 무엇입니까?


7
항상 문서를 먼저 살펴보십시오 : php.net/manual/en/control-structures.break.php
Felix Kling

나는이 개 액션 스크립트와 같은 솔루션, 라벨 하나, 그리고 다른 그 단지 용도 게시 한break
에드가 비예 가스 알바를

답변:



34

PHP Manual 말한다

break는 몇 개의 중첩 된 엔 클로징 구조가 분리되어야하는지 알려주는 선택적 숫자 인수를 허용합니다.

break 2;

16

break-n 문만 사용할 수 있습니다.

foreach(...)
{
    foreach(...)
    {
        if (i.name == j) 
            break 2; //Breaks 2 levels, so breaks outermost foreach
    }
}

php> = 5.3 인 경우 gotoActionScript에서와 유사한 레이블 및 s를 사용할 수 있습니다 .

foreach (...)
{        
    foreach (...)
    {
        if (i.name == j) 
            goto top;
    }
}
top:

그러나 goto신중하게 사용해야합니다. 고토는 사악하다 (나쁜 습관으로 간주)


1
goto에는 매우 유효한 용도가 있습니다. eval ()조차도 악하지 않습니다. goto보다 훨씬 덜 사용합니다.
lucian303

1
예. 나는 "고토 신중하게 사용되어야한다"고 말했다 이유
에드가 비예 가스 알바

그 노트에서 나는이 페이지가 관련이 있다고 생각합니다 : php.net/manual/en/control-structures.goto.php
Ruggi

12

를 사용 break 2;하여 동시에 두 개의 루프를 끊을 수 있습니다 . "이름이 지정된"루프를 사용하는 예제와 완전히 같지는 않지만 트릭을 수행합니다.


6
$i = new MovieClip();
foreach ($movieClipArray as $i)
{
    $nameArray = array();
    foreach ($nameArray as $n) 
        if ($i->name == $n) 
            break 2;
}

break 문이 필요한 작업을 수행하지 않지만 제공된 코드 전체를 PHP로 변환 해보십시오 (내부 루프 만 종료 됨).
Marty

페이지 새로 고침 :) PHP 매뉴얼에 따르면 break 2 ... 로 대체했습니다 . "break는 몇 개의 중첩 된 둘러싸는 구조가 깨질 것인지 알려주는 선택적 숫자 인자를받습니다."
Jordan Arseno

4

goto를 사용 하시겠습니까?

for ($i = 0, $j = 50; $i < 100; $i++) 
{
  while ($j--) 
  {
    if ($j == 17) 
      goto end; 
  }  
}
echo "i = $i";
end:
echo 'j hit 17';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.