갑자기 급 궁금해졌습니다.. sql_fetch_array 가.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
갑자기 급 궁금해졌습니다.. sql_fetch_array 가.

QA

갑자기 급 궁금해졌습니다.. sql_fetch_array 가.

본문

안녕하세요.

 

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

$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

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

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

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문을 쓰는 경우도 있습니다.

 

 

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

 

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

 

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

 

답변을 작성하시기 전에 로그인 해주세요.
전체 6
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT