for문 질문입니다
본문
안녕하세요
그누보드5를 다운받아서 코들르 보면서 뒷단을 공부중인 앞단 개발자입니다.
for ($i=0; $row=sql_fetch_array($result); $i++)
이 구문에서 의문이 생겨서 질문드립니다.
제가 아는 for문에 가운데 들어가는 부분은 그 조건이 참일때 반복문을 계속 돌리는 걸로 알고 있는데요
$i가 증가하는데 가운데 있는 조건과 무슨 상관이 있는건지 궁금합니다
답변 4
for문의 가운데는 비교문과 상관이 있습니다.
증가값과는 비교문과 연동되면 상관이 있고
비교문과 연동이 없으면 상관이 없겠죠
PHP에서 비교문은
참일때 작동합니다.
for문의 중간도 비교문이죠
sql_fetch_array는 내부적으로 mysql_fetch_array등과 연동되는데
호출될때마다 다음레코드단위로 가져옵니다.
마지막은 null 이겠죠
위에서 조건문의 설명중
PHP에서 참인조건은
(1) true
(2) 0이 아닌 값
(3) null이 아닌값
(4) 양수
(5) 공백이 아닌값
반대로 거짓(false)인 조건은
(1) false
(2) 0
(3) 공백
(4) null
입니다.
for문은 (초기값; 비교문; 증가값)
비교문이 참이면 수행
으로 이루어져있습니다.
(2) false
그누보드의 sql_query()는 mysqli_query() 에 해당하고,
sql_fetch_array()는 mysqli_fetch_assoc()에 해당합니다.
$result = sql_query(); $result에는 이렇게 검색한 결과값(모든 행과 컬럼)들을 갖게 되는데
이 셑(set)에서 한 행씩 가져와 리턴해 주는 함수가
$row = sql_fetch_array() 함수고 리턴한 한 행이 $row에 저장되어 사용됩니다.
만약 테이블에 세개의 행이 있다면
for($i=0; $row=sql_fetch_array($result);$i++) 에서
$i=0 일때 $row는 true임니다.
$i=1 일때 $row는 true 입니다.
$i=2 일때 $row는 true 입니다.
$i=3 일때 $row는 false가 됩니다.
$row=sql_fetch_array($result)를 $row[$i] 또는 $result[$i]로 하면 원하는 결과를 얻으실 수 없게 됩니다.
가운데 조건과 상관은 없습니다.
$i 를 넘버링용으로 활용한다던지 하는 목적으로, 넣었을 가능성은 있습니다.
for 문 안에 $i 를 활용하는 부분이 없다면,
while ($row=sql_fetch_array($result)) {
..
}
문으로 해도 됩니다.
for 문안에 $i 를 딱히 쓰는 부분이 없다면,
다른 곳에서 쓰는 코드를 복사하였거나, 습관적인 성격일 수 있습니다.
아무 상관이 없습니다.