정의 및 사용 방법
- PHP 버전
- 4+
while 문은 조건식과 코드 블록으로 구성되며,
조건식이 참(true)인 동안 코드 블록을 반복 실행하는 반복문입니다.
조건식이 거짓(false)이 되면 반복이 종료됩니다.
부연 설명
while 문은 코드 블록이 실행되기 전에 조건을 확인하는 Pre-test loop입니다. 더 정확히 말하면, 조건을 확인하고 조건이 충족되면 코드 블록이 실행됩니다.
while 문은 특정 횟수가 사전에 정해져 있지 않고 부울(boolean) 조건에 따라 코드 블록을 반복 실행할 때 매우 유용합니다.
기본 예제
$i = 1;
while ($i <= 5) {
echo $i . ' ';
$i++;
}
// 출력: 1 2 3 4 5
구문
while 문은 괄호(())로 묶인 조건식과 코드 블록({})으로 구성되어 있습니다.
while (코드 블록 실행 조건식) {
// 실행할 코드 블록
}
코드 블록 실행 조건식
코드 블록({})을 실행할 조건식입니다. 생략할 수 없습니다.
- 이 조건식이 참(
true)이면 코드 블록({})을 실행합니다. - 이 조건식이 거짓(
false)이면while문은 더 이상 실행되지 않고 종료됩니다. - 조건식을 생략하면 구문 오류가 발생합니다.
구문의 실행 순서
while 문이 실행될 때, 다음의 순서대로 실행됩니다.
코드 블록 실행 조건식으로 검사합니다. 이때, 이 조건식이 참(true)이면 코드 블록({})을 실행합니다. 하지만, 거짓(false)이면while문은 더 이상 실행되지 않고 종료됩니다.코드 블록 실행 조건식이 참(true)으로 검사되었다면 코드 블록({})이 실행됩니다.- 코드 블록(
{})이 실행된 후,코드 블록 실행 조건식으로 검사하는 첫 번째 단계로 되돌아갑니다. 이후의 단계가 반복됩니다.
참고 사항
PHP에서는 while 문에 대한 제어 구조를 위한 대체 구문(Alternative Syntax for Control Structures)을 지원합니다. 이를 "colon syntax"라고도 부릅니다. 이 구문은 주로 HTML과 PHP를 섞어 쓸 때 가독성을 높이기 위해 사용됩니다.
while 문
<?php while (코드 블록 실행 조건식): ?>
<?php // 실행할 코드 블록 ?>
<?php endwhile; ?>
<?php $i = 1; ?>
<?php while ($i <= 5): ?>
<?php
echo $i . ' ';
$i++;
?>
<?php endwhile; // 출력: 1 2 3 4 5 ?>
while 문의 유용성
while 문은 특정 횟수가 사전에 정해져 있지 않고 부울(boolean) 조건에 따라 코드 블록({})을 반복 실행할 때 매우 유용합니다.
예를 들어, 데이터베이스에서 가져올 데이터의 개수가 사전에 정해져 있지 않은 상황에서 반복적으로 데이터를 처리할 수 있습니다.
아래 예제는 MySQL 데이터베이스에서 게시판 목록을 가져와 출력하는 코드입니다. 데이터베이스에 저장된 게시물의 개수는 미리 알 수 없으므로, while 문을 사용하여 모든 게시물을 출력할 때까지 반복합니다.
일러두기!!
소개하는 예제 코드는 while 문의 작동 원리를 이해하기 위한 단순 예제입니다.
실전에서 사용하려면 추가적인 적절한 조치가 필요할 수 있습니다.
// 데이터베이스 연결 설정
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
// MySQLi를 사용하여 데이터베이스 연결 생성
$conn = new mysqli($servername, $username, $password, $dbname);
// 연결 상태 확인
if ($conn->connect_error) {
die("연결 실패: " . $conn->connect_error);
}
// 게시판 목록을 가져오는 SQL 쿼리
$sql = "SELECT id, title, content FROM board";
$result = $conn->query($sql);
// 결과 처리
if ($result) {
if ($result->num_rows > 0) {
// while 문을 사용하여 모든 게시물을 출력
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"] . " - 제목: " . $row["title"] . " - 내용: " . $row["content"] . "<br>";
}
} else {
echo "게시물이 없습니다.";
}
} else {
echo "쿼리 오류: " . $conn->error;
}
// 데이터베이스 연결 종료
$conn->close();
이 예제는 while 문이 특정 횟수가 사전에 정해져 있지 않은 조건에서 코드를 반복 실행하는 데 어떻게 유용하게 사용될 수 있는지를 보여줍니다. 데이터베이스에서 결과를 가져와 처리할 때, 결과의 개수를 미리 알 수 없으므로 while 문을 사용하여 조건이 충족될 때까지 반복 실행하는 것이 적절합니다.
반면에, for 문은 특정 횟수나 정해져 있는 범위만큼 코드를 반복 실행할 때 매우 유용합니다.
주의할 점
while 문을 사용할 때에는 무한 반복에 빠지지 않게 주의해야 합니다.
반복 횟수를 제어하기 위해 상황에 따라 조건식을 변경하거나 증감식 사용을 고려할 수 있습니다.
$i = 1;
while ($i <= 5) {
echo $i;
/* 이 코드에서 증감식이 없다면 무한 반복에 빠지게 됩니다. */
//$i++;
}