PHP의 루프. while 및 do-while 루프를 사용하는 방법 마지막 PHP를 제외한 루프에 추가

특정 조건이 발생할 때 루프를 조기에 종료할 수 있는 것이 편리한 경우가 많습니다. break 문은 이러한 기회를 제공합니다. while, do while, for, foreach 또는 switch 와 같은 구문과 함께 작동합니다.

break 문은 종료할 중첩 구조 수를 알려주는 선택적 숫자 인수를 사용할 수 있습니다. 숫자 인수의 기본값은 현재 루프를 종료하는 1입니다. 루프에서 switch 문이 사용되면 break/break 1은 switch 문에서만 종료됩니다.

\n"; break 1; /* switch 문만 종료합니다. */ case 10: echo "반복 10; 우리는 떠난다
\n"; break 2; /* switch 문을 종료하고 동안 루프. */ ) ) // ($bar1 = -4; $bar1에 대한 또 다른 예< 7; $bar1++) { // проверка деления на ноль if ($bar1 == 0) { echo "Выполнение остановлено: деление на ноль невозможно."; break; } echo "50/$bar1 = ",50/$bar1,"
"; } ?>

물론, 때때로 루프를 완전히 종료하는 것보다 루프의 반복 중 하나를 건너뛰고 싶을 때가 있습니다. 이 경우에는 continue 문으로 완료됩니다.

계속하다

계속 문을 사용하여 루프 본문에서 현재 코드 블록 처리를 중지하고 다음 반복으로 이동할 수 있습니다. 루프를 멈추지 않고 단순히 다음 반복으로 점프한다는 점에서 break 문과 다릅니다.

break와 같은 continue 문은 나머지 반복을 건너뛸 중첩 루프 수준을 지정하는 선택적 숫자 인수를 사용할 수 있습니다. 숫자 인수의 기본값은 1이며 현재 루프의 나머지 부분만 건너뜁니다.

"; 계속; ) echo "50/$bar1 = ",50/$bar1,"
"; } ?>

$counter 변수의 0 값은 루프 동안 건너뛰었지만 루프는 다음 값으로 계속되었습니다.

이동

goto는 무조건 분기 연산자입니다. 프로그램 코드의 다른 섹션으로 이동하는 데 사용됩니다. 프로그램에서 가고자 하는 장소는 콜론 다음에 레이블(단순 식별자)을 사용하여 표시됩니다. 점프하려면 원하는 레이블이 goto 문 뒤에 배치됩니다.

goto 문을 사용하는 간단한 예:

goto 문에는 몇 가지 사용 제한 사항이 있습니다. 대상 레이블은 동일한 파일과 동일한 컨텍스트에 있어야 합니다. 즉, 함수나 메소드 외부로 나갈 수 없으며 그 중 하나 내부로도 들어갈 수 없습니다. 또한 루프 또는 스위치 문 내부로 이동할 수 없습니다. 그러나 이러한 구성(from 루프 및 switch 문)에서 종료하는 데 사용할 수 있습니다. 일반적으로 goto 문은 다중 수준 break 대신 사용됩니다.

"; ) echo "루프 뒤 - 레이블 앞"; // 명령어는 실행되지 않습니다. end: echo "레이블 뒤"; ?>

어떤 경우에는 원하는 결과를 얻을 때까지 코드를 실행해야 합니다. PHP는 이를 위해 while , for 및 foreach 루프를 제공합니다.

PHP while 루프 구문

통사론 주기동안:

PHP에서 while 루프를 사용하는 예:

위의 php while 루프 예제에서 카운터 변수 $i 는 먼저 0 으로 초기화됩니다.

while 루프 조건은 $i입니다.< 10 . Это означает, что мы проверяем, меньше ли переменная, чем 10.

중괄호로 묶인 모든 것은 루프의 명령(본문)입니다. 조건이 true 를 반환하는 한 반복됩니다. 위의 예에서 $i가 화면에 인쇄된 다음 카운터 변수가 1씩 증가합니다. 이것은 루프 조건이 결국 실패하도록 하는 데 중요합니다. 예를 들어 $i 카운터 변수를 증가시키는 것을 잊었기 때문에 루프 조건이 항상 충족되면 스크립트는 무한 루프에 들어갈 것입니다. 운 좋게도 PHP는 잠시 후 스크립트 실행을 중지합니다.

루프 조건과 루프 본문을 원하는 만큼 복잡하게 만들 수 있습니다. 예를 들어, while 내부에서 while php를 사용하십시오. php는 배열을 반복하는 동안( array ) 또는 둘 이상의 카운터 변수를 정의합니다.

$min) ( echo "count1: $count1; count2: $count2
"; $ counter1 += 2; // $counter1 = $counter1 + 2; $counter2 -= 3; // $count2 = $count2-3; ) ?>

이 예에서는 $ counter 1 및 $ counter 2 라는 두 개의 변수를 정의합니다. 한 변수는 2만큼 증가하고 다른 변수는 3만큼 감소합니다. 두 조건이 모두 충족되는 동안 while 루프가 실행됩니다. $ count 1< $ max и $ count 2 >$분

루프에 대한 break 및 continue 키워드의 영향

명령으로 부서지다~할 수 있다 while 루프의 실행을 중단 PHP. 특정 사용자를 찾고 있다고 가정해 보겠습니다. 그런 다음 while 루프에서 모든 사용자를 반복할 수 있습니다. 올바른 사용자를 찾으면 다음으로 루프를 중지하십시오. 예어 부서지다.

break 키워드를 사용하는 간단한 예:

동안($count< $max) { if ($count == 10) { echo "Останавливаемся на числе 10"; break; } echo "$count,"; $counter += $increment; // увеличивает $count на значение $increment } ?>

이 코드는 0에서 $max = 30까지 오름차순으로 숫자를 반복하며 $ increment 값, 즉 숫자 2를 $ count 변수에 추가합니다. 그러나 $ count 변수가 10과 같으면 while 루프에서 나가기 PHP.

계속 키워드 사이클이 끝나지 않는다 php에서 while은 완전하지만 루프 본문의 나머지 부분만 건너뜁니다. 아래의 예는 이것을 보여줍니다:

동안($count< $max) { $counter += $increment; // увеличивает $payer на $increment if ($count >= 10 && $count<= 15) { echo "Число между 10 и 15
"; 계속하다; )

echo "$카운트
"; } ?>

이 루프는 0에서 시작하여 $max 값까지 카운터를 증가시킵니다. $ 카운터 변수는 항상 $ 증분 변수의 값만큼 증분됩니다. 즉, 0, 2, 4 등의 값을 취합니다.

$count 변수의 값이 10에서 15 사이이면 텍스트와 명령문이 화면에 표시됩니다. 계속하다루프 본문의 나머지 표현식을 건너뜁니다. 결과적으로 숫자 10, 12 및 14가 표시되지 않는 것을 볼 수 있습니다.

PHP do-while 루프

작은 수정 동안 do-while 루프입니다. 이 경우 루프 조건은 해당 본문이 실행된 후에만 확인됩니다. 이것은 루프의 본문이 적어도 한 번 실행됨을 의미합니다.

Do-while 루프 구문:

생성하고 싶다고 가정해 봅시다. 난수, 0과 10 사이 또는 20과 30 사이여야 합니다. 랜드의 정의에 따르면( $ 최소 , $최대) 사이의 숫자를 무작위로 생성할 수 있습니다. $분그리고 $최대:

10 && $무작위< 20) { $random = rand (0, 30); }

echo "난수: $random"; ?>

PHP 루프 사용 하다동안, $random 변수를 초기화하지 않고도 표현식의 값을 얻을 수 있습니다. 루프의 본문은 조건이 확인되기 전에 실행됩니다. 그러면 위의 예는 다음과 같을 것입니다.

10 && $무작위< 20);

echo "난수: $random"; ?>

초보자에게는 do-while 루프가 약간 혼란스러울 수 있습니다. 그 목적을 완전히 이해하지 못한다면 이것은 문제가 되지 않습니다. do-while 루프는 실제로 거의 사용되지 않습니다.

루프 문은 모든 프로그래밍 언어에서 매우 자주 사용됩니다. 거의 모든 작업은 루프를 사용하므로 이를 연구하는 데 특별한 주의를 기울일 필요가 있습니다. PHP에는 4가지 유형의 루프가 있습니다.

  • while(접두사 조건 확인);
  • do..while (후위 조건 확인);
  • 을 위한;
  • 각각 ;

처음 세 개의 루프는 프로그래밍 언어(C++, Pascal)의 표준 루프와 유사하고 마지막 루프(foreach)는 Perl과 유사합니다. 처음 세 개의 루프 문을 별도로 살펴보고 마지막 문은 별도의 강의에서 논의하겠습니다. 각 루프는 중첩 루프, 즉 루프 내의 루프를 허용합니다.

PHP의 while 루프 문

구문이 다른 프로그래밍 언어의 구문과 매우 유사한 상당히 단순한 루프 문입니다.

PHP의 while 구문은 다음과 같습니다.

//복잡한 부울 조건일 수 있음( 연산자; ) ?>

조건은 true(true) 또는 false(false)여야 하는 표현식입니다. 조건이 참이면 중괄호 안의 명령문이 실행됩니다. 그런 다음 조건이 참인지 다시 확인합니다. 조건이 거짓이면 프로그램은 루프에 들어가지 않습니다. 단일 문의 경우 중괄호를 생략할 수 있습니다.

메모: 조건은 논리 대수학 &&, ||, !를 사용하여 매우 많은 표현식으로 구성될 수 있습니다. 등.

조건에 연산자가 있으면 어떻게 든 변경해야 한다는 사실에 주목할 가치가 있습니다. 그렇지 않으면 루프가 단순히 반복됩니다.

다음은 while 을 사용하는 간단한 예입니다.

"; $i++; ) ?>

위의 예는 다음과 같은 결과를 생성합니다.

나는 = 0
나는 = 1
나는 = 2
나는 = 3
나는 = 4

$i=5는 인쇄되지 않습니다. i는 루프의 맨 끝에서 증가하므로 5에 도달하자마자 루프에 들어가는 조건이 충족되지 않습니다.

PHP의 break 문

루프를 즉시 종료하는 특별한 break 문이 있습니다. 이 연산자는 조건이 항상 참일 때 무한 루프를 종료하는 데 자주 사용됩니다. 예를 들어 위의 예는 다음과 같이 작성할 수 있습니다.

//조건은 항상 참( echo "i =".$i."
"; $i++; if($i>=5) break; ) ?>

결과는 이전 예와 동일합니다.

PHP의 계속 문

계속 문; 루프의 현재 반복을 종료하고 시작 부분으로 이동하지만 루프를 완전히 종료하지는 않습니다. 예를 들어:

//조건은 항상 참( echo "i =".$i."
"; $i++; if($i>=5) 중단; 그렇지 않으면 계속; ) ?>

이 예제의 결과는 이전 예제와 동일합니다.

실습에서 알 수 있듯이 계속하십시오. 그리고 휴식 종종 복잡한 주기를 구현하는 데 도움이 됩니다.

다음은 while 루프를 사용하는 또 다른 예입니다.

"; } //이 두 while의 결과는 //접두사 및 접두사 형식으로 인해 다릅니다.$i=0; while (++$i //접두어 형식( echo "i =".$i."
"; } ?>

PHP에서 do...while 루프 문

do...while 문은 일반 while 문과 매우 유사합니다. 그들의 유일한 차이점은 상태를 확인하는 시간입니다. do...while 루프는 검사가 맨 마지막에 발생하기 때문에 적어도 한 번은 실행됩니다. 구문 do...while :

다음 예를 고려하십시오.

"; $i++; ) 동안($i

그 결과는 처음으로 고려된 예와 유사합니다.

계속된다는 점은 주목할 가치가 있습니다. 그리고 휴식 이러한 주기에도 사용할 수 있습니다.

PHP의 for 루프 문

for 문의 구문은 다음과 같습니다.

시작 시 변수 초기화가 발생합니다. usloviya는 하나 이상의 루프 종료 조건을 포함해야 합니다. shag에는 각 반복이 끝날 때 실행되는 명령문이 포함되어 있습니다. 예를 들어:

"; } ?>

이 루프를 실행한 결과는 이전 예제와 동일합니다.

for 사용의 가장 큰 장점은 루프의 본문을 생략할 수 있고 필요한 모든 작업이 shag 섹션에서 수행된다는 것입니다. 명확성을 위해 다음은 예입니다.

", $i++); ?>

논평: echo는 shag에서 허용되지 않습니다.

주기 단계와 조건은 매우 다양할 수 있습니다. 예를 들어, i++가 아니라 i+=5(5씩 증가)라고 쓸 수 있습니다.

for 루프의 각 섹션을 생략하면 무한 루프가 생성됩니다.

계속의 사용을 허용합니다. 그리고 휴식 .

마지막으로 두 개의 동등한 루프 구성의 예를 제공하지만 하나는 for이고 다른 하나는 while입니다.

다음에 해당:

이제 막 배우기 시작하는 초보자를 위해 이 글을 씁니다. PHP. 나는이 기사에서 다양한 PHP의 루프, 이 기사가 내 사이트에 없었기 때문입니다. 만 있었지만 일반적인 유사성에도 불구하고 이것은 여전히 ​​​​동일하지 않습니다. 에 PHP있다 4가지 유형의 사이클.

  1. 동안
  2. 하는 동안
  3. 각각

순서대로 정렬하고 가장 인기있는 것부터 시작하겠습니다. PHP의 루프(그리고 뿐만 아니라 PHP) - 이것 FOR 루프. 이 루프의 구문은 다음과 같습니다.

For(식_1; 식_2; 식_3) (
연산자
}

식_1즉각적이고 무조건적으로 실행 식_3루프의 각 반복 후에 실행됩니다. 식_2루프가 계속되어야 하는지 확인하는 테스트입니다. 식의 결과가 다음과 같을 경우 진실, 루프의 다음 반복이 시작되고 거짓, 루프가 종료됩니다.

다음 유형의 루프는 동안. 이것은 구문이 다음과 같은 더 간단한 유형의 루프입니다.

동안(식) (
연산자
}

까지 표현보고 진실, 루프가 실행되고 나타나는 즉시 거짓, 작동을 멈춥니다.

DO-WHILE 루프매우 유사 동안, 하지만 한 가지 차이점이 있습니다. 종료 조건은 이전이 아니라 반복이 완료된 후에 확인됩니다. 따라서 이 루프는 항상 최소한 1 한번. 그리고 그래서 DO-WHILE 루프 구문:

하다(
연산자
) 동안(조건);

마지막으로 사이클의 마지막 유형은 각각, 제공 배열과 객체에 대해서만 반복. 배열의 키가 숫자가 아닐 때 필요합니다. 을 위한) 및 문자열. FOREACH 루프 구문다음:

Foreach($array_or_object as $key => $value) (
연산자
}

마지막으로 모든 것을 적용해 보겠습니다. 배열 반복을 위한 PHP의 4가지 유형의 루프:

$목록 = 배열(5, 2, 3, 10, 12, 10);
$array = array("a" => 1, "x" => 10, "m" => -5);
($i = 0; $i에 대해< count($list); $i++) {
에코 $목록[$i]."; ";
}
에코 "
";
$i = 0;
동안 ($i< count($list)) {
에코 $목록[$i]."; ";
$i++;
}
에코 "
";
$i = 0;
하다(
에코 $목록[$i]."; ";
$i++;
) 동안($i< count($list));
에코 "
";
foreach ($key as $array => $value) (
echo "$키 = $값; ";
}
?>

모든 프로그래머는 이 모든 주기를 마음으로 알아야 하므로 명확하지 않은 내용이 있으면 다시 읽어보거나 댓글로 질문해 주시면 답변해 드리겠습니다.

참고:사이트의 적응형 버전이 활성화되어 브라우저의 작은 크기에 자동으로 조정되고 읽기 쉽도록 사이트의 일부 세부 정보가 숨겨집니다. 즐거운 감상!

친애하는 독자 및 정기 구독자 여러분 안녕하세요! PHP에 대한 기사의 주기를 계속할 시간입니다. 오늘 우리는 주기와 같은 기본적이면서 동시에 매우 중요한 것에 대해 공부할 것입니다. 먼저 사이클에 대해 알아야 할 사항은 무엇입니까? 그리고 그들이 모든 곳에서 사용된다는 사실과 Joomla, VirtueMart, Wordpress, OpenCart 및 기타 CMS용 템플릿도 예외는 아닙니다.

사이클이란 무엇입니까? 주기동일한 코드 조각을 반복적으로 반복하는 것입니다. 얼마나 많은 반복을 해야 하는지는 우리가 스스로 만들고 제어할 수 있는 주기 카운터에 따라 다릅니다. 예를 들어 온라인 상점 범주에 제품을 그려야 하거나 블로그 게시물을 표시하거나 기사 또는 제품에 대한 댓글을 표시해야 할 때 CMS(사이트 엔진)의 모든 메뉴도 싸이클을 사용하여 만들어지는 경우에 매우 편리합니다. 일반적으로 루프는 매우 자주 사용됩니다.

그러나 루프 자체로 이동하기 전에 먼저 다음과 같은 명령문을 처리해야 합니다. 증가그리고 감소.

++(증가) 연산자는 변수 값을 1 증가시키고 --(감소) 연산자는 변수 값을 1 감소시킵니다. 사이클에서 카운터로 사용하거나 일반적으로 프로그래밍할 때 매우 편리합니다. PRE 증가/감소 및 POST 증가/감소도 있습니다.

PRE 증가/감소 ++$a $a를 1씩 증가시키고 $a의 값을 반환합니다. --$a $a를 1 감소하고 $a 값을 반환합니다. POST 증가/감소 $a++ $a의 값을 반환한 다음 $a를 1씩 증가시킵니다. $a-- $a의 값을 반환한 다음 $a를 1만큼 감소시킵니다.

예를 들어:

$a = 1; echo "출력 번호: " . $a++; // 출력 번호: 1 echo " 출력 번호: " . $a; // 출력 번호: 2 echo "출력 번호: $a"; $a += 1; // 첫 번째 줄과 동일$a = 1; echo "출력 번호: " . ++$a; // 출력 번호: 2 echo "출력 번호: " . $a; // 출력 번호: 2 $a += 1; echo "출력 번호: $a"; // 이 블록의 첫 번째 줄과 동일

for 루프

for (part A; part B; part C)( // 모든 코드, 원하는 만큼의 줄; )

for 루프는 3개의 부분과 본문 자체로 구성됩니다. 파트 A일반적으로 90%의 경우 루프 카운터가 생성됩니다. 파트 B- 이것은 대략적으로 말하면 이미 우리에게 친숙합니다. 만약, 즉, 진실에 대한 테스트(사실?). 조건이 참이면 진실, PHP는 루프 내부로 이동하여 계속 실행합니다. 파트 C- 파트 A와 마찬가지로 일반적으로 파트 C에서 카운터를 사용하여 일종의 변형을 수행합니다. 예를 들어:

"; ) echo "루프를 종료하고 코드를 통해 이동..."; ?>

이제 for 루프의 알고리즘에 대해 알아보겠습니다. PHP가 볼 때 가장 먼저 보는 것은 파트 A이며 한 번만 실행합니다(아래 이미지 참조). 그런 다음 PHP는 B 부분으로 이동하여 참인지 거짓인지 확인합니다. 참이면 루프의 본문을 실행하고 그 후에만 파트 C로 이동합니다. 그런 다음 PHP는 파트 B로 돌아가서 여전히 참인지 더 이상 존재하지 않는지 확인합니다. 그렇지 않은 경우 루프가 종료되고, 그렇다면 B 부분이 거짓일 때까지 계속됩니다.

이전 예의 결과:

동안 루프

while (part B)( // 모든 코드, 원하는 만큼의 줄; )

보시다시피 파트 A와 파트 C가 없고 for 루프, 즉 파트 B에서 조건만 남습니다. 카운터를 사용해야 하는 경우 나머지 중에 while 루프 내부에 배치해야 합니다. 코드에서 이것은 파트 C가 될 것입니다. 그리고 while 구문이 시작되기 전에 카운터를 생성해야 합니다.

파트 A; while (part B)( // 모든 코드, 원하는 만큼 줄 수, Part C; )

이전 for 루프를 while 루프로 변경해 보겠습니다.

"; $i++; ) echo "루프를 종료하고 코드를 통해 이동..."; ?>

결과는 정확히 동일할 것입니다. 무엇을 사용할 것인가: for 루프 또는 while 루프는 취향의 문제입니다. 어느 쪽이 더 편리하고 논리적인지 확인하십시오. 차이는 없습니다.

... 동안 루프

모든 유형의 주기 중에서 덜 일반적입니다. 본질적으로 거꾸로 된 동안입니다. 그 비결은 PHP가 적어도 한 번(첫 번째)이지만 do ... while 루프의 본문으로 확실히 들어갈 것이라는 것입니다. 왜냐하면 이 루프에서 끝에 있는 조건은 다음과 같습니다.

파트 A; do( // 임의의 코드, 원하는 만큼 줄 수 있음; Part C; )while(Part B);

"; $i++; )동안($i< 8); echo "ВЫШЛИ ИЗ ЦИКЛА и пошли дальше по коду..."; ?>

세 가지 유형의 사이클 모두에 필수 부품이 없다는 것을 이해하는 것이 중요합니다.

파트 A와 파트 C가 없는 for 루프의 예:

For(;$i > 8;)( // 코드 )

세 부분이 모두 없는 for 루프의 예:

For(;;)( // 클래식 무한 루프 )

즉, 모든 세미콜론은 여전히 ​​for 루프에 남아 있습니다. 이것이 구문입니다!

끝없는 루프

무한 루프는 루프 조건(파트 B)이 항상 참이기 때문에 페이지를 끝까지 로드할 수 없는 개발자 오류입니다. 예를 들어:

"; $i++; )while($i != 0); echo "루프를 종료하고 코드를 통해 이동..."; ?>

결과:

모든 것이 화면에 맞지 않기 때문에 일부만 보여주었습니다. 이것이 30초 후에 브라우저가 충돌할 때까지 브라우저와 사이트 서버가 끝없이 고통받는 방식입니다. 이는 위의 예에서 $i 변수가 0이 되지 않고 처음에는 1과 같으며 지속적으로 증가하기 때문입니다.

즉, 개발자가 그러한 조건을 생각해 냈을 때 부주의했습니다.

주기 관리

break 문.모든 반복(반복)을 재생하기 위해 루프가 필요하지 않은 상황이 있습니다. 예를 들어, 어떤 특정 순간에 우리는 그것을 중단하고 코드 아래에서 계속 실행하기를 원합니다:

"; if ($i === 5) break; // $i가 5와 같으면 루프를 종료합니다 $i++; ) echo "5:("; ?>

결과:

위의 예에서 PHP는 5에 도달하자마자 루프를 종료했습니다. 그렇지 않으면 7로 계산되었을 것입니다.

계속 문또한 루프의 실행을 중단하지만 break와 달리 continue는 루프를 종료하지 않고 PHP 인터프리터를 조건(파트 B로)으로 되돌립니다. 예시:

"; ) echo "뭔가 놓쳤나요?"; ?>

결과:

PHP가 에코에 도달하지 못했기 때문에 5를 건너뛰었습니다.

루프는 루프 내에 중첩될 수 있습니다. 이러한 경우 계속 및 중단 문은 해당 주기가 있는 하나의 주기만 포함합니다. 즉, 그들은 전체가 아닌 한 수준으로 던져집니다. 예시:

그러나 우리는 뛰어 넘을 수준을 선택할 수 있습니다.

"; $i++; $i=1; $k=1; 동안($k< 8) { echo "Итерация $k номер ". $k . "
"; if ($k === 5) break 2; $k++; ) ) ?>

결과:

당연히 이 경우 중첩 루프보다 큰 숫자를 설정할 수 없습니다.

foreach 루프

마지막으로 foreach 루프가 가장 중요합니다. 사용된 오직열거 및 개체에 대해 (그것을 배우기에는 너무 이르다). 구문 예:

"; } ?>

결과:

이것은 짧은 foreach 구문이지만 배열 셀 값 외에도 셀 이름(키)도 표시하는 확장 버전도 있습니다.

$value) ( ​​​​echo "섹션에서 " . $key . "다음과 같은 제목의 기사가 있습니다. ". $값 . "
"; } ?>

결과:

$key와 $value, 심지어 $xxx와 $yyy까지 변수 이름을 원하는 대로 지정할 수 있다는 사실에 주목합니다.

배열인 경우 foreach 루프만 사용하고 다른 루프는 사용하지 않습니다. VirtueMart의 모든 곳, 그리고 실제로 모든 곳에서 사용되는 것은 이 주기입니다.

공유하다