for문에서 continue

for문에서 continue

QA

SIR 제작의뢰 - 견적무료/익명보정/호스팅, DB 이전/단기개발. 이젠 ' 의뢰인'이 원하는 '제작자'에게만 연락처를 알릴 수 있습니다.

for문에서 continue

본문

for문을 돌리면서 행을 배열에 넣는다고 할 때 조건이 맞지 않는 행은 continue를 사용하여 배열에 넣는것을 막는 경우가 있습니다.

 

예를들어

for ($i=0; $i<10; $i++) {

            $row = sql_fetch(" select * from {$write_table} where wr_id = '{$arr_notice[$k]}' ");

            if (!$row['wr_id']) continue;

            $list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);

}

 

위와같은 경우에서 중간중간 continue가 실행되었고 이후 $list배열을 print_f 했다면,

Array
(
    [0] => Array
        (
            [wr_id] =>
            [wr_num] =>
            [wr_reply] => 

         )

     [2]=> Array
        (
            [wr_id] =>
            [wr_num] =>
            [wr_reply] => 

         )

 

처럼 인덱스가 붙어있지 않고 중간 중간 값이 비는 경우($k값이 1일 때 continue 실행)가 생깁니다.

이때 $list 배열을 그대로 쓰면 중간 값이 비어있기 때문에 불편해지는데요, 보통 이런 경우 어떻게 코딩하시나요?

 

예상답변 1번 : contine 직전에 --$i를 추가하여 $i증가를 상쇄한다.

예상답변 2번 : 배열에 빈값이 있는 경우 앞으로 정리해주는 라이브러리 함수를 사용한다.

 

이 글을 내 페이스북 계정으로 보내기 이 글을 내 트위터 계정으로 보내기 이 글을 내 구글플러스 계정으로 보내기

이 질문에 댓글 쓰기 :

답변 1

채택됨

몰라무서워님의 답변

$list[] = get_list(...);

 

이렇게 $i 첨자를 없애면 됩니다

 

array_push($list, get_list(...));

 

이렇게 해도 되고요

주소복사
채택됨
답변의 댓글
답변을 작성하시기 전에 로그인 해주세요.
전체 65,626 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT