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번 : 배열에 빈값이 있는 경우 앞으로 정리해주는 라이브러리 함수를 사용한다.