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
답변에 대한 댓글 3개
네, 위의 문장구조로는
$result는 mysql의 레코드 포인터인것이구요
$row는 해당 Row의 값들(쿼리에서 * 로 한경우 해당 row전체, 명시한 경우 명시한 컬럼들만)을
가져와서 처리하는거죠
말씀하신대로 3개의 Row이면
4번째는 값이 null 이기때문에 종료됩니다.
최상위 행 하나만을 계속해서 출력하는 건가요?
댓글을 작성하려면 로그인이 필요합니다.
가운데 조건과 상관은 없습니다.
$i 를 넘버링용으로 활용한다던지 하는 목적으로, 넣었을 가능성은 있습니다.
for 문 안에 $i 를 활용하는 부분이 없다면,
while ($row=sql_fetch_array($result)) {
..
}
문으로 해도 됩니다.
for 문안에 $i 를 딱히 쓰는 부분이 없다면,
다른 곳에서 쓰는 코드를 복사하였거나, 습관적인 성격일 수 있습니다.
댓글을 작성하려면 로그인이 필요합니다.
그누보드의 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]로 하면 원하는 결과를 얻으실 수 없게 됩니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
테이블에 행이 3개있으면 한번에 3개를 가져오는게 아니고 하나씩 가져와서 4번째 반복때에서
가져올 값이 없으니 false가 되어 반복문이 중단되는 건가요?