마지막 PHP를 제외하고 루프에 추가합니다. PHP foreach 루프: 이를 사용하는 두 가지 방법

이제 막 공부를 시작하는 초보자들을 위해 이 글을 쓰고 있습니다. PHP. 이 기사에서는 모든 종류의 PHP의 루프, 이 기사가 내 웹사이트에 없었기 때문입니다. 단지 있었지만 일반적인 유사성에도 불구하고 여전히 동일하지 않습니다. 안에 PHP있다 4가지 유형의 사이클.

  1. 하는 동안
  2. DO-WHILE
  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가지 유형의 루프:

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

프로그래머라면 이 모든 사이클을 외워야 하기 때문에 갑자기 뭔가 불명확하다면 다시 읽어보시거나 댓글로 질문해주시면 답변해드리겠습니다.

모두에게 좋은 하루 되세요. Alexey Gulynin이 연락했습니다. 지난 기사에서 우리는 PHP의 링크를 살펴보았습니다. 이 기사에서는 PHP의 다양한 루프에 대해 이야기하고 싶습니다. 총 4가지 유형이 있습니다.

  • 반복 for 루프
  • 전제 조건이 있는 루프
  • 사후 조건이 있는 루프
  • foreach 루프

예제를 사용하여 모든 사이클을 살펴보겠습니다. 다음과 같은 작업이 있습니다. 10개 요소의 경우 숫자의 제곱을 인쇄해야 합니다.
1) 반복 for 루프:

"; } ?>

이 루프에서는 여러 조건을 사용할 수 있습니다. 요소가 6인지 확인한 다음 다른 것을 출력하지 않는다고 가정합니다(아직 break 문을 모릅니다). 다음과 같이 작성할 수 있습니다.

"; } ?>

2) 전제 조건이 있는 루프:

"; $i++; ) ?>

이 경우 처음 10개 숫자의 제곱도 표시됩니다. 이 루프는 다음 루프와 달리 처음부터 조건을 확인하기 때문에 전제조건이 있는 루프라고 합니다.

3) 사후 조건이 있는 루프:

"; $i++; ) 동안 ($i<= 10) ?>

이 경우 코드 블록이 실행된 후 조건을 확인하며, 이 코드 블록은 어떠한 경우에도 한 번 실행됩니다.

4) Foreach 루프. 이 루프는 배열 값을 반복하도록 설계되었으며 PHP 언어의 네 번째 버전에서만 나타났습니다. 배열은 각각 값에 해당하는 키 집합입니다. 배열에 대해서는 다음 문서에서 더 자세히 설명합니다. 놓치지 않도록 업데이트를 구독하는 것이 좋습니다.
이 루프의 구문은 다음과 같습니다.

Foreach($key=>$value 형식의 배열)(문 블록)

$key는 키를 나타냅니다., $값 - 값. 이 구성은 원래 배열을 변경하지 않습니다. 원본 배열을 수정하려면 참조 유형을 사용해야 합니다.

Foreach($key=>&$value 형식의 배열)(문 블록)

이 루프를 사용하여 모든 환경 변수($_SERVER 배열)의 내용을 표시해 보겠습니다.

$value) ( ​​​​에코 " $키 => $값
"; } ?>

꼭 전화를 걸어보세요 이 예모든 것이 어떻게 작동하는지 확인하세요.

루프 실행을 중단해야 하는 상황이 자주 발생합니다. 이렇게 하려면 break 구문을 사용해야 합니다. 이 구성에는 하나의 선택적 매개변수가 있습니다. 기본적으로 이 매개변수는 1입니다. 현재 루프의 실행을 중단합니다. 이 예를 살펴보겠습니다. 1부터 5까지 2개의 반복 루프를 만들고 숫자가 5와 같으면 숫자를 인쇄합니다. 이 경우 단순히 break 를 사용하면 숫자 5가 5번 인쇄됩니다. break(2) 를 작성하면 한 번만 작성됩니다.

"; break; //스크립트를 실행한 후 break(2); ) ) ) ?>

이 연산자는 검색 루프에 사용하기 편리합니다. 우리가 찾고 있는 것을 발견하자마자 우리는 즉시 주기를 완료합니다.

반대로 continue 문은 루프의 현재 반복을 건너뛰고 다음 반복으로 이동합니다. 괄호 안에 루프의 중첩 수준을 표시할 수도 있습니다.
예를 들지 않고 이 연산자에 대한 숙제를 드리겠습니다.

루프를 사용하지 않고 PHP에서 심각한 스크립트를 작성할 가능성은 거의 없습니다. 사이클이란 무엇입니까? 이는 동일한 코드를 반복적으로(심지어 끝없이) 실행할 수 있는 특별한 유형의 제어 구조입니다. PHP에서는 다음 루프가 지원됩니다:

처음 세 개의 루프는 대부분의 프로그래밍 언어에서 가장 많이 볼 수 있는 루프입니다. 루프는 조건에 따라 중단되거나 계속될 수 있습니다(루프 본문을 실행하지 않고 다음 반복으로 진행). 각 사이클을 자세히 살펴보겠습니다.

for 루프

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

For(초기화; 조건; Commands_after_iteration) (loop_body; )

초기화 블록은 항상 카운터와 기타 변수(필요한 경우)를 초기화합니다. 조건 블록은 루프 실행을 중지해야 하는 지점을 지정합니다. 루프가 반복될 때마다 실행되는 명령 블록에서 일반적으로 카운터 값과 기타 변수(필요한 경우)가 변경됩니다.

// 값 배열 $array = array("사과", "감자", "수박", "꽃", "물", "수은", "산소", "밀", "러시아", "모스크바" ", " 샤워"); // 루프 조건은 다음과 같습니다. 카운터가 배열 요소의 수와 동일한 값에 도달할 때까지 // 루프 본문이 실행됩니다. for($i = 0; $i< count($array); $i++) { print "
".($i + 1)". ".$array[$i].."; ) /* 주기의 결과는 다음과 같습니다: 1. 사과. 2. 감자. 3. 수박. 4. 꽃. 5. 물. 6. 수은. 7 .산소 8.밀 9.러시아 10.모스크바 11.비 */

$i 카운터는 0부터 시작했기 때문에 반복할 때마다 값에 1을 추가하여 목록을 더 친숙하게 만들었습니다. 각 반복 후에 카운터 값이 1씩 증가하고 11에 도달하면 루프가 중지됩니다. 이제 do-while 루프를 살펴보겠습니다.

do-while 루프

do-while 루프는 사후 조건에서 작동한다는 점에서 다릅니다. 이는 루프 본문에 포함된 코드가 적어도 한 번 실행된다는 의미입니다. 루프 구문은 다음과 같습니다:

(loop_body; ) while(condition);

이 루프는 웹 프로그래밍에서는 거의 사용되지 않지만 스크립트에서는 필요할 수 있습니다.

// 이미 우리에게 친숙한 배열 $array = array("사과", "감자", "수박", "꽃", "물", "수은", "산소", "밀", "러시아", "모스크바" " , "비"); // 루프 시작 $i = 1; do(인쇄하다"
".$i.". ".$array[($i - 1)]."; ) while($i++< count($array)); /* Результат работы цикла будет таким: 1. Яблоко. 2. Картошка. 3. Арбуз. 4. Цветок. 5. Вода. 6. Ртуть. 7. Кислород. 8. Пшеница. 9. Россия. 10. Москва. 11. Ливень. */

이 루프와 for 루프에서 인쇄하는 내용의 차이점을 확인하세요. do-while 루프 본문의 코드는 한 번 이상 실행되므로 카운터의 초기 값은 0으로 설정되었습니다. 루프 작동 방식... 코드가 실행된 다음 조건이 테스트됩니다. 첫 번째 반복에서 카운터 값은 1이었습니다. 반복 후 하나는 11(요소 수)보다 작은 것으로 나타났습니다. 마지막 반복에서 카운터의 값은 11이었고 이는 11보다 작지 않았습니다. 루프가 중지되었습니다. do-while과 매우 유사 while 루프.

while 루프

while 루프는 전제 조건입니다. 조건이 참일 때만 실행됩니다. 즉, while 루프가 전혀 실행되지 않을 수 있습니다. 구문은 다음과 같습니다.

while(조건) (loop_body; )

for 루프와 함께 while 루프가 매우 자주 사용됩니다.

$array = array("사과", "감자", "수박", "꽃", "물", "수은", "산소", "밀", "러시아", "모스크바", "비"); $i = 1; 동안($i++<= count($array)) { print "
".$i.". ".$array[($i - 1)]."."; ) /* 루프의 결과는 다음과 같습니다: 1. 사과. 2. 감자. 3. 수박. 4. 꽃. 5. 물. 6. 수은 7. 산소 8. 밀 9. 러시아 10. 모스크바 11. 비 */

while 루프는 초보 개발자에게 가장 간단하고 이해하기 쉽습니다.

foreach 루프

foreach 루프는 위의 모든 루프와 다릅니다. 이는 PHP4에 등장했으며 배열을 반복하도록 설계되었습니다. 개발자는 이를 위해 아무것도 발명할 필요가 없습니다. 모든 것이 쉽고 간단합니다.

/** * foreach 루프는 "각각에 대해"로 이해되어야 합니다. * 루프에 의해 처리된 배열은 루프 본문 내부에서만 액세스할 수 있는 변수로 * 전달됩니다. 원하는 경우 * 배열 키에 액세스할 수도 있습니다. */ foreach(array as array_element) (loop_body; ) foreach(array as array_key => array_element) (loop_body; )

foreach 루프의 원리는 for, while 및 do-while 루프와 완전히 다릅니다. 따라서 경험이 부족한 개발자가 정확히 무엇을 할 수 있는지(그리고 심지어 해야 하는지) 이해하는 것은 매우 어렵습니다.

// 이미 알고 있는 배열을 변경해 보겠습니다. 연관시켜 보겠습니다. $array = array("사과" => "과일", "감자" => "야채", "수박" => "베리", "꽃" => "식물", "물" => "액체", "수은" => "금속", "산소" => "가스", "밀" => "빵", "러시아" => "우리 조국", "모스크바" => "우리 조국의 수도", “비 " => "포파도스"); $i = 1; // 이렇게 할 수 있습니다 foreach($array as $v) ( print "
".$i.". ".$v."."; $i++; ) /* 예상치 못한 결과가 나왔습니다: 1. 과일. 2. 야채. 3. 베리. 4. 식물. 5. 액체. 6. 금속. 7. 가스. 8 . 빵 9. 우리 조국 10. 우리 조국의 수도 11. 팝파도 */ // 이제 다르게 해보자 foreach($array as $k => $v) ( print "
".$i.". ".$k." is ".$v."; $i++; ) /* 이제 결과는 다음과 같습니다. 1. 사과는 과일입니다. 2. 감자는 야채입니다. 3. 수박은 베리입니다. 4. 꽃은 식물 5 . 물은 액체 6. 수은은 금속 7. 산소는 기체 8. 밀은 빵 9. 러시아는 우리 조국 10. 모스크바는 우리 조국의 수도 11. 비 히트작입니다. .*/

이 사이클이 어떻게 작동하는지 이해하시나요? 그렇지 않은 경우 자료에 대한 의견에 질문을 할 수 있습니다.

모든 루프에서 구문을 사용할 수 있습니다. 부서지다또는 계속하다. 루프를 계속하는 것이 타당하지 않거나 다음 반복으로 넘어가야 하는 경우도 있습니다.

$array = array("사과" => "과일", "감자" => "야채", "수박" => "베리", "꽃" => "식물", "물" => "액체", "수은" => "금속", "산소" => "가스", "밀" => "빵", "러시아" => "우리 조국", "모스크바" => "우리 조국의 수도", “비 " => "포파도스"); $i = 1; // 루프가 구문과 함께 작동하는 방식의 예 continue foreach($array as $k => $v) ( if($k != "Oxygen") continue; print "
".$i.". ".$k." is ".$v."; $i++; ) /* 결과는 다음과 같습니다 1. 산소는 기체입니다. */ $i = 1; // 구문 중단으로 루프가 작동하는 방식의 예 foreach($ $k = > $v) ( if($k == "Oxygen") break; print "로 배열
".$i.". ".$k." is ".$v."; $i++; ) /* 결과는 1. 사과는 과일입니다. 2. 감자는 야채입니다. 3. 수박은 베리입니다. 4. 꽃은 식물입니다. 5. 물은 액체이다 6. 수은은 금속이다 */

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

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

\n"; break 1; /* 스위치 구성만 종료합니다. */ 사례 10: echo "반복 10; 나가자
\n"; break 2; /* 스위치 구성과 while 루프를 종료합니다. */ ) ) // ($bar1 = -4; $bar1의 또 다른 예< 7; $bar1++) { // проверка деления на ноль if ($bar1 == 0) { echo "Выполнение остановлено: деление на ноль невозможно."; break; } echo "50/$bar1 = ",50/$bar1,"
"; } ?>

물론 때로는 루프를 완전히 종료하는 것보다 루프 반복 중 하나를 건너뛰는 것을 선호할 수도 있습니다. 이 경우 continue 문을 사용하여 이 작업을 수행합니다.

계속하다

루프 본문에서 현재 코드 블록 처리를 중지하고 다음 반복으로 이동하려면 continue 문을 사용할 수 있습니다. 루프를 중지하지 않고 단순히 다음 반복으로 이동한다는 점에서 중단 연산자와 다릅니다.

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

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

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

이동

goto는 무조건 점프 연산자입니다. 프로그램 코드의 다른 섹션으로 점프하는 데 사용됩니다. 프로그램에서 가야 할 곳은 레이블(간단한 식별자)과 콜론으로 표시됩니다. 계속 진행하려면 원하는 레이블을 goto 문 뒤에 배치합니다.

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

goto 문에는 사용에 몇 가지 제한이 있습니다. 대상 레이블은 동일한 파일 및 동일한 컨텍스트에 있어야 합니다. 즉, 함수나 메서드의 경계 밖으로 이동할 수 없고 그 중 하나로 이동할 수 없습니다. 또한 루프나 스위치 문 내부로 이동할 수 없습니다. 그러나 이러한 구문(루프 및 스위치 문)에서 탈출하는 데 사용할 수 있습니다. 일반적으로 다중 레벨 break 문 대신 goto 문이 사용됩니다.

"; ) echo "루프 후 - 표시 앞"; // 명령은 실행되지 않습니다. end: echo "표시 뒤"; ?>

PHP foreach 루프는 다음과 같이 사용할 수 있습니다.

foreach($array_name as $value)( //실행할 코드)

foreach($array_name as $key =>$value)( // //실행해야 할 코드)

숫자 배열과 함께 foreach 루프를 사용하는 예

이 예에서는 다음을 사용하여 5개 요소의 배열을 만듭니다. 수치. 그런 다음 PHP foreach 루프를 사용하여 이 배열을 반복합니다. foreach 루프 내에서 echo를 사용하여 배열 값을 인쇄했습니다.

데모 및 코드 보기

배열 키와 값의 예

이 예에서는 PHP foreach 루프를 사용하는 또 다른 방법을 설명합니다. 이를 위해 우리는 세 가지 요소의 연관 배열을 만들었습니다. 여기에는 직원의 이름( 열쇠로) 및 급여액 ( 값으로):

데모 및 코드 보기

foreach 루프에서 배열 요소의 값을 변경하는 예

당신은 또한 할 수 있습니다 PHP를 사용하여 array foreach는 배열 요소의 값을 변경할 수 있습니다. 이렇게 하려면 "$" 앞에 "&"를 사용하세요. 값 변수. 예를 들어:

&$value_of_element

값이 변경됩니다. 더 명확하게 하기 위해 다음 예를 고려하십시오.

이 예에서는 5개 요소로 구성된 숫자형 배열을 만들었습니다. 그 후 foreach 루프를 사용하여 요소의 값을 표시했습니다.

그런 다음 $value_of_element 앞에 "&"가 추가되는 또 다른 foreach 루프를 만들었습니다. 중괄호 안에 배열 요소에 새 값을 할당합니다.

새 값을 할당하기 전과 후의 차이점을 확인하기 위해 print_r() 함수를 사용하여 배열을 표시합니다.

데모 및 코드 보기

PHP foreach 루프는 무엇에 사용됩니까?

PHP foreach 루프는 배열 작업에 사용됩니다. 각 요소를 반복합니다.

for 루프를 사용하여 배열 작업을 수행할 수도 있습니다. 예를 들어 length 속성을 사용하여 배열의 길이를 가져온 다음 이를 max 연산자로 적용합니다. 그러나 foreach는 배열과 함께 작동하도록 설계되었으므로 더 쉽게 사용할 수 있습니다.

MySQL을 사용하는 경우 이 주기가 더욱 적합합니다. 예를 들어, 데이터베이스 테이블에서 여러 행을 선택하여 배열로 전달할 수 있습니다. 그런 다음 foreach 루프를 사용하여 배열의 모든 요소를 ​​반복하고 일부 작업을 수행합니다.

foreach 루프를 배열이나 개체와 함께 사용할 수 있습니다.

foreach 루프 사용

PHP에서 PHP foreach 루프를 사용하는 방법에는 두 가지가 있습니다. 두 가지 모두 아래에 설명되어 있습니다.

  • 첫 번째 방법의 구문은 다음과 같습니다.

foreach($array_name as $value)( 에코 $value )

이 경우 배열 이름을 지정한 다음 $value 변수를 지정해야 합니다.

각 반복마다 현재 요소의 값이 $value 변수에 할당됩니다. 반복이 완료된 후 변수에 다음 요소의 값이 할당됩니다. 그리고 배열의 모든 요소가 반복될 때까지 계속됩니다.

  • 두 번째 방법의 구문( 키 값으로 PHP foreach):

이는 키/값 쌍을 사용하는 연관 배열에 적합합니다.

각 반복 중에 현재 요소의 값이 $value_of_element 변수에 할당됩니다. 또한 요소 키는 $key_of_element 변수에 할당됩니다.

숫자 배열로 작업하는 경우 요소 키가 필요하지 않은 첫 번째 방법을 사용할 수 있습니다.

이 출판물은 "라는 기사를 번역한 것입니다. PHP foreach 루프를 사용하는 2가지 방법", 친절한 프로젝트 팀이 준비한

공유하다