본문 바로가기
PHP

[PHP] DB에서 특정 행들만 가져오기(4) - 반복문 while(){}

by LightBlogger 2017. 9. 13.

2017/09/12 - [PHP] - [PHP] DB에서 특정 행들만 가져오기(3) - 목록 읽어오기 file()에서 목록을 불러오는 것까지 수행했다.


이제 목록의 첫 번째 값을 넣고 쿼리를 돌리고, 결과를 출력하고, 다시 두 번째 값을 넣고 쿼리를 돌리고... 를 반복하면 된다.


이때 반복문 while(){} 이 사용된다.


while(){} 은 괄호() 안의 부분이 TRUE인 경우 중괄호{} 안의 내용을 반복 실행하게 된다.


그러므로 반복실행시 괄호 안의 조건이 언젠가 FALSE가 되어야 반복을 멈출 수 있다.


가장 흔히 사용되는 것이 괄호 안에 변수를 넣고, 해당 변수가 중괄호 안에서 하나씩 증가하도록 하는 것이다. 


다음의 예를 보자.


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
<?php

$list = file("list.txt");
$id = $list[0];
$id = rtrim($id, "\r\n");

$i = 0;
while($i<5){
  echo $i;
  $i = $i + 1;
}

 ?>
  </body>
</html>


$i 를 0으로 주고, 반복할 때마다 1씩 증가하도록 해 주었다. 


$i 가 5가 되는 순간 반복문은 FALSE가 되어 반복을 중지할 것이다.


결과를 보자.



$i 의 값을 4까지 출력하고 반복문이 멈춘 것을 볼 수 있다.


우리는 자료가 20개이므로 $i < 20 으로 주면 0부터 19까지 20개의 자료를 불러올 수 있겠다.


예를 들면 다음과 같다.


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
<?php

$list = file("list.txt");
$id = $list[0];
$id = rtrim($id, "\r\n");

$i = 0;
while($i<20){
  $log = $list[$i];
  echo $log;
  echo "</br>";
  $i = $i + 1;
}

 ?>
  </body>
</html>


반복문 안쪽을 보면 $log 라는 변수에 $list[0] 부터 $list[19] 까지의 값이 담기도록 세팅하였다.


</br> 은 html 에서 강제개행을 의미하는 태그로, 자료를 알아보기 쉽게 하기 위해 추가하였다.


실행하면 다음과 같다.



list.txt 의 내용을 그대로 가져온 것으로 보이지만


실은 첫 줄에 $list[0] 을 출력하고 </br> 로 강제개행하고, 다시 처음으로 돌아가 이번엔 $list[1]을 출력하고... 를 반복한 결과이다.



이제 이전에 테스트 삼아 적은 $id = $list[0] 은 현재의 $log = $list[$i] 에 해당하므로 그 행은 지우고,


$id = rtrim($id, "\r\n") 역시 반복문 안쪽으로 옮겨주자. 


$list[0] 을 만든 후 공백을 제거하고, 다시 $list[1]을 만든 후 공백을 제거하도록 해 주면 되겠다.


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
<?php

$list = file("list.txt");

$i = 0;
while($i<20){
  $log = $list[$i];
  $log = rtrim($log, "\r\n");
  echo $log;
  echo "</br>";
  $i = $i + 1;
}

 ?>
  </body>
</html>


마지막으로, 반복문의 조건으로 $i<20 과 같이 조건을 주는 것은 자료가 길어지면 번거롭다.


20개 대신 'list.txt 에 있는 자료의 개수만큼' 이라고 지정해 주면 좋을 것이다.


count() 함수가 이와 같은 역할을 하므로 다음과 같이 적자. 결과에는 변함이 없다.


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
<?php

$list = file("list.txt");

$i = 0;
while($i<count($list)){
  $log = $list[$i];
  $log = rtrim($log, "\r\n");
  echo $log;
  echo "</br>";
  $i = $i + 1;
}

 ?>
  </body>
</html>


본격적으로 쿼리를 입력할 준비가 되었다. 다음 포스트에서 이어가 보자.

반응형

댓글