if문 질문

if문 질문

QA

if문 질문

답변 2

본문

보드 여분필드bo_1에 넣은 배열에 값만 리스트에 띄우고자 하는데요.

 

방법1

$zin = explode("|",$board['bo_1']);

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

     if($list[$i]['is_notice']) continue;

     if(!in_array($list[$i]['wr_id'], $zin)) continue;

 

}

in_arrayd앞에 !(느낌표)를 제거 하니

여분필드bo_1에 넣은 값과 wr_id가 같은 글들은 제외되고 따른 글들은 잘나오는데

!(느낌표)를 붙이면

모든 글들이 안나옵니다. bo_1과wr_id가 같은 글은 나와야할텐데..  무슨 문제가 있는걸까요?..

 

 

방법2

$zin = explode("|",$board['bo_1']);
$counter = count($zin);

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

    if($list[$i]['is_notice']) continue;
    for($k=0;$k<$counter;$k++){
        if($list[$i]['wr_id'] != $zin[$k]) {continue ;}
    }

 

}

위처럼 했을때 리스트가 모두 출력됩니다.  continue가 두번째 for문으로 건너뛰기 때문인가요??

첫번쨰 for문으로 건너뛰기 할려면 어떻게 해야할까요?..

 

이 질문에 댓글 쓰기 :

답변 2

for문 바로 위에 print_r($zin); 넣고

 

 if(!in_array($list[$i]['wr_id'], $zin)){echo $list[$i]['wr_id']; continue; } 이렇게 해서 비교 해보세요

 

방법1 만 말씀드리면..

if(!in_array($list[$i]['wr_id'], $zin)) continue; 에서  

bo_1과wr_id가 같은 글이 나와야 하는데, 나오지 않는 이유는..

그 윗라인..  if($list[$i]['is_notice']) continue; 때문이지 않을까 추측됩니다. (공지글인 경우)

윗라인을 임시 삭제해보면, 그 문제인지 확인이 가능할 것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 137
© SIRSOFT
현재 페이지 제일 처음으로