count(): Parameter 질문좀...
본문
이쪽 언어는 완전 문외한이라 라인 에러뜨는곳을 봐도 어딜 손봐야할지 전혀 모르겠어서요.
php 7.2 오류라는데 수정법좀 도움받을 수 있을까요?
에러 표시줄만 써보면 이렇습니다.
노란색 부분이 에러 라인이던데 뭐가 잘못된거죠?
$temp_h = $holiday[$var];
$boo = '';
for($k = 0; $k < count($booking[$var]); $k++) {
list($na,$wr,$ti,) = explode("|",$booking[$var][$k]);
if($member['mb_level'] >= '5') {
$popup_url = $board_skin_url."/booking_popup.php?bo_table=".$bo_table."&office_no=".$off['id_no']."&wr_id=".$wr;
$link2 = "javascript:booking_view(\"{$popup_url}\")";
} else {
$link2 = G5_BBS_URL."/board.php?bo_table=".$bo_table."&office_no=".$off['id_no']."&wr_id=".$wr."&".$qstr;
}
$boo .= "<li class='member_list'><a href='".$link2."'><i class='fa fa-volume-up' aria-hidden='true'></i> ".$ti." ".$na."</a></li>";
}
$arr[] = $rst; // 임시휴무 및 예약시간제외설정값
$arr[] = $boo; // 예약자 리스트
답변 2
오류내용을 안올려주셔서 짐작해봅니다.
숫자 연산시 값이 없다면
php 7 이전에서는 0 으로 반환되어 문제가 없지만
php 7 이상에서는 nan,INF, Infinite 등으로 반환될 수 있습니다.
이에 따라 기존 php 버전에서는 통과되던 부분이 문제가 발생하므로
is_nan, is_infinite 함수르 체크하여 대응하셔야 합니다.
문제는 $temp_h = $holiday[$var]; 해당변수의 배열이 없기때문에
count로 수를 반환받지 못하였고, 0을 반환받아서 for 문이 돌지 않았던 기존과는달리
is_nan, is_infinite 등으로 반환되어 문제가 발생되었다고 생각됩니다.
for문을 이걸로 감싸주시면 배열이 비었을경우 통과안될겁니다.
if(!empty($holiday[$var])) {
....
}
select COUNT(distinct 필드명) AS 변수명 from 테이블명;
인줄 알았는데 질문이 이게 아니군요..ㅎㅎ
$temp_h = $holiday[$var];
if(count($booking[$var]) > 0){
$cnt = count($booking[$var]);
}else{
$cnt = "0";
}
$boo = '';
for($k = 0; $k < $cnt; $k++) {