테스트 사이트 - 개발 중인 베타 버전입니다

갑자기 급 궁금해졌습니다.. sql_fetch_array 가. 채택완료

오늘도산다 5년 전 조회 3,439

안녕하세요.

 

갑자기 문뜩 궁금해졌습니다.

$result = sql_query($sql); 로 데이터를 뽑아서.

for ($i=0; $row=sql_fetch_array($result); $i++)

데이터를 출력한다고 가정했을때.

 

저 반복문은 어떤 이유로 $result의 수만큼 반복하는건가요?

$result 의 [num_rows] 의 수만큼 반복하도록 되어져 있는건가요?

 

 for에서 비교문쪽 $row=sql_fetch_array($result); 이부분이

$i < $result의 num_row 수

이렇게 해석되게 되어져 있는건가요??

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
s
sinbi Expert
5년 전

제 어설픈 지식으론, sql_fetch_array() 함수 특성탓 같네요.

한줄한줄 데이터의 행을 row 변수에 패치시키다가 패치할 게 없으면 자동으로 끝나는 식...

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

오늘도산다
5년 전
감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

5년 전

for 문에서 두번째 표현 영역은 <조건 표현식>입니다.

즉 두번째 표현식이 '참'인 경우 계속 반복입니다.

 

for ($i = 0; $i < 10; i++) 문의 경우,

$i 가 0일때, 1일 때, ... 9일 때까지 반복이고..

$i 가 10이되면 -> 두번째 표현식이 거짓(false)이 되어 수행이 되지 않습니다.

 

for ($i=0; $row=sql_fetch_array($result); $i++)  문도 마찬가지로..

두번째 표현식이 참(true)인 경우 반복입니다.

sql_fetch_array 는 $result 에서 한 줄(row) 씩 fetch 해오는 함수이고,

더이상 fetch 할 줄이 없는 경우 false 를 return 합니다.

 

그래서 저 for문은,

쿼리 결과값 줄이 5줄이라면.. -> 5줄 fetch 해 오는 동안 반복

쿼리 결과값 줄이 100줄이라면.. -> 100줄 fetch 해 오는 동안 반복

입니다.

 

그래서.. 다음의

while ($row=sql_fetch_array($result)) 문으로 변경하여도..

반복수행 결과는 동일합니다. 다만 증가하는 $i 변수를 사용할 일이 있다면.. for문을 쓰는 경우도 있습니다.

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

오늘도산다
5년 전
완벽한 대답입니다.
마당쇠151
3년 전
알기 쉽네요.

댓글을 작성하려면 로그인이 필요합니다.

 for에서 비교문쪽 $row=sql_fetch_array($result); 이부분이

 

조건문이 됩니다.  그래서 해당하는 값이 없을 경우에 탈출합니다.

 

for ($i=0; $i<count($result); $i++) {   <=== 이런식이면 좋았을건데 위처럼 있으니 어렵게 느끼 셨을수도 있겠네요. 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

오늘도산다
5년 전
쉽게 설명해주셔서 감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인