수색…


소개

루프는 프로그래밍의 기본 요소입니다. 프로그래머는 주어진 반복 횟수 또는 반복 횟수 만큼 반복되는 코드를 작성할 수 있습니다. 반복 횟수는 명시적일 수도 있고 (예를 들어 6 회 반복) 일부 조건이 충족 될 때까지 계속 될 수 있습니다 ( '지옥이 얼어 붙을 때까지').

이 주제는 다양한 유형의 루프, 관련 제어문 및 PHP의 잠재적 인 애플리케이션을 다룹니다.

통사론

  • for (init 카운터, 테스트 카운터, 증가 카운터) {/ * code * /}
  • foreach (값으로 배열) {/ * code * /}
  • foreach (키 => 값으로 배열) {/ * 코드 * /}
  • while (조건) {/ * 코드 * /}
  • do {/ * code * /} while (조건);
  • 아닐 루프 {계속; }
  • anyloop {[ anyloop ...] {계속 int; }}
  • 아닐 루프 {break; }
  • anyloop {[ anyloop ...] {break int; }}

비고

동일하거나 유사한 코드 블록을 여러 번 실행하는 것이 종종 유용합니다. 거의 동일한 문을 복사하여 붙여 넣는 대신 루프는 코드를 특정 횟수만큼 실행하고 데이터 구조를 걷는 메커니즘을 제공합니다. PHP는 다음 네 가지 유형의 루프를 지원합니다.

  • for
  • while
  • do..while
  • foreach

이러한 루프를 제어하려면 continuebreak 문을 사용할 수 있습니다.

...에 대한

for 문은 명령문이나 명령문 블록을 실행할 횟수를 알고있을 때 사용됩니다.

이니셜 라이저는 루프 반복 횟수 카운터의 시작 값을 설정하는 데 사용됩니다. 변수는이 목적을 위해 여기에 선언 할 수 있으며 $i 라고하는 것은 일반적입니다.

다음 예제에서는 10 번 반복하고 0에서 9까지의 숫자를 표시합니다.

for ($i = 0; $i <= 9; $i++) {
    echo $i, ',';
}

# Example 2
for ($i = 0; ; $i++) {
  if ($i > 9) {
      break;
  }
  echo $i, ',';
}

# Example 3
$i = 0;
for (; ; ) {
    if ($i > 9) {
        break;
    }
    echo $i, ',';
    $i++;
}

# Example 4
for ($i = 0, $j = 0; $i <= 9; $j += $i, print $i. ',', $i++);

예상되는 출력은 다음과 같습니다.

0,1,2,3,4,5,6,7,8,9,

각각

foreach 문은 배열을 반복하는 데 사용됩니다.

각 반복에 대해 현재 배열 요소의 값이 $value 변수에 할당되고 배열 포인터가 1만큼 이동되고 다음 반복에서 다음 요소가 처리됩니다.

다음 예제에서는 할당 된 배열의 항목을 표시합니다.

$list = ['apple', 'banana', 'cherry'];

foreach ($list as $value) {
    echo "I love to eat {$value}. ";
}

예상되는 출력은 다음과 같습니다.

I love to eat apple. I love to eat banana. I love to eat cherry. 

foreach를 사용하여 값의 키 / 인덱스에 액세스 할 수도 있습니다.

foreach ($list as $key => $value) {
    echo $key . ":" . $value . " ";
}

//Outputs - 0:apple 1:banana 2:cherry

기본적으로 $value$list 에있는 값의 복사본이므로 루프 내부에서 변경 한 내용은 $list 나중에 반영되지 않습니다.

foreach ($list as $value) {
    $value = $value . " pie";
}
echo $list[0]; // Outputs "apple"

foreach 루프 내에서 배열을 수정하려면 & 연산자를 사용하여 $value 를 참조로 지정하십시오. 나중에 $valueunset 하여 변수 $value 다른 곳으로 재사용해도 배열을 덮어 쓰지 않는 것이 중요합니다.

foreach ($list as &$value) { // Or foreach ($list as $key => &$value) {
    $value = $value . " pie";
}
unset($value);
echo $list[0]; // Outputs "apple pie"

현재 항목의 배열 키를 참조하여 foreach 루프 내의 배열 항목을 수정할 수도 있습니다.

foreach ($list as $key => $value) {
    $list[$key] = $value . " pie";
}
echo $list[0]; // Outputs "apple pie"

단절

break 키워드는 즉시 현재 루프를 종료합니다.

받는 유사 continue 문하는 break 루프의 실행을 중단합니다. 그러나 continue 문과 달리 break 는 루프를 즉시 종료시키고 조건문을 다시 실행하지 않습니다 .

$i = 5;
while(true) {
    echo 120/$i.PHP_EOL;
    $i -= 1;
    if ($i == 0) {
        break;
    }
}

이 코드는

24
30
40
60
120

$i 가 0 인 경우를 실행하지 않으므로 0으로 나눈 값으로 인해 치명적인 오류가 발생합니다.

break 문은 여러 수준의 루프를 벗어날 때도 사용할 수 있습니다. 이러한 동작은 중첩 루프를 실행할 때 매우 유용합니다. 예를 들어 출력 문자열에 문자열 배열을 복사하려면 출력 문자열이 정확히 160 자까지 # 기호를 지우십시오 #

$output = "";
$inputs = array(
    "#soblessed #throwbackthursday",
    "happy tuesday",
    "#nofilter",
    /* more inputs */
);
foreach($inputs as $input) {
    for($i = 0; $i < strlen($input); $i += 1) {
        if ($input[$i] == '#') continue;
        $output .= $input[$i];
        if (strlen($output) == 160) break 2; 
    }
    $output .= ' ';
}

break 2 명령은 내부 루프와 외부 루프의 실행을 즉시 종료합니다.

해라.

do...while 문은 최소한 한 번은 코드 블록을 실행합니다. 그런 다음 조건이 참인 동안 루프를 반복합니다.

다음 예제는 $i 의 값을 적어도 한 번 증가시키고, 값이 25보다 작은 한 변수 $i 를 계속 증가시킵니다.

$i = 0;
do {
    $i++;
} while($i < 25);

echo 'The final value of i is: ', $i;

예상되는 출력은 다음과 같습니다.

The final value of i is: 25

잇다

continue 키워드는 루프의 현재 반복을 중지하지만 루프를 종료하지는 않습니다.

break 문과 마찬가지로 continue 문은 루프 본문 내에 있습니다. 실행되면 continue 문은 실행을 즉시 조건부 루프로 건너 뜁니다.

다음 예제에서는 루프가 배열의 값을 기반으로 메시지를 인쇄하지만 지정된 값은 건너 뜁니다.

$list = ['apple', 'banana', 'cherry'];

foreach ($list as $value) {
    if ($value == 'banana') {
        continue;
    }
    echo "I love to eat {$value} pie.".PHP_EOL;
}

예상되는 출력은 다음과 같습니다.

I love to eat apple pie.
I love to eat cherry pie.

continue 문은 점프 할 루프 레벨 수를 지정하여 루프의 외부 레벨로 즉시 실행을 계속하는 데 사용될 수도 있습니다. 예를 들어 다음과 같은 데이터를 고려하십시오.

과일 색깔 비용
사과 빨간 1
바나나 노랑 7
체리 빨간 2
포도 녹색 4

비용이 5보다 적은 과일 만 파이를 만들기 위해서

$data = [
    [ "Fruit" => "Apple",  "Color" => "Red",    "Cost" => 1 ],
    [ "Fruit" => "Banana", "Color" => "Yellow", "Cost" => 7 ],
    [ "Fruit" => "Cherry", "Color" => "Red",    "Cost" => 2 ],
    [ "Fruit" => "Grape",  "Color" => "Green",  "Cost" => 4 ]
];

foreach($data as $fruit) {
    foreach($fruit as $key => $value) {
        if ($key == "Cost" && $value >= 5) {
            continue 2;
        }
        /* make a pie */
    }
}

continue 2 문이 실행되면 실행은 외부 루프를 계속하고 다른 모든 코드를 건너 뛰는 $data as $fruit 즉시 $data as $fruit 점프합니다 (내부 루프의 조건부 포함).

동안

while 문은 테스트 표현식이 참일 경우 코드 블록을 실행합니다.

테스트 표현식이 참이면 코드 블록이 실행됩니다. 코드가 실행 된 후 테스트 표현식이 다시 평가되고 테스트 표현식이 거짓이 될 때까지 루프가 계속됩니다.

다음 예제는 종료하기 전에 합계가 100에 도달 할 때까지 반복합니다.

$i = true;
$sum = 0;

while ($i) {
    if ($sum === 100) {
        $i = false;
    } else {
        $sum += 10;
    }
}
echo 'The sum is: ', $sum;

예상되는 출력은 다음과 같습니다.

The sum is: 100


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow