foreach 문은 일반적인 for 문과는 전혀 다른 형태의 반복문이다. foreach 문은 배열의 모든 요소를 손쉽게 순회할 수 있도록 해준다.
이 반복문은 루프마다 배열의 각 요소를 지정된 변수에 대입한다. 이렇게 대입받은 변수를 이용하면 루프 안에서 배열의 각 요소에 순차적으로 접근할 수 있다.
따라서 foreach 문은 정확히 배열의 길이(length)만큼 반복된다.
foreach(배열 as 값을 저장할 변수){
실행하고자 하는 명령문;
}
예시
$arr = array(2, 4, 6, 9);
foreach($arr as $value){
echo "변수 \$value의 현재값은 {$value}입니다.<br>";
}
unset($value);
배열의 값뿐만 아니라 키값도 저장하여 활용하는 예시
$arr = array(
"둘" => 2,
"넷" => 4,
"여섯" => 6,
"여덟" => 8
);
foreach($arr as $key => $value){
echo "배열 \$arr에서 키값 '{$key}'에 대한 값은 {$value}입니다.<br>";
}
unset($value);
일반적으로 조건식의 검사를 통해 루프로 진입하면, 다음 조건식을 검사하기 전까지 루프 안에 있는 모든 명령문을 실행한다.
사용자는 continue 문과 break 문을 통해, 이러한 일반적인 루프의 흐름을 직접 제어할 수 있다.
continue 문은 루프 내에서 사용하여 해당 루프의 나머지 부분을 건너뛰고, 바로 다음 조건식의 판단으로 넘어가게 한다.
보통 반복문 내에서 특정 조건에 대한 처리를 제외하고자 할 때 자주 사용된다.
1부터 100까지의 정수 중에서 4의 배수를 제외하고 출력하는 예시
$num = 4;
for($i = 0; $i <= 100; $i++){
if($i % num === 0){
continue;
};
echo "{$i}";
break 문은 루프 내에서 사용한다.
해당 반복문을 완전히 종료시키고, 반복문 다음에 위치한 명령문으로 이동시킨다.
즉, 루프 내에서 조건식의 판단 결과에 상관없이, 반복문을 완전히 빠져나가고 싶을 때 사용한다.
1부터 100까지의 합을 구하는 예시
$sum = 0;
$startNum = 1;
$endNum = 100;
$i = $startNum;
while(true){
$sum+= $i;
if($i === $endNum)
break;
$i++;
}
echo "{$startNum}에서부터 {$endNum}까지 더한 값은 {$sum}입니다.";