count(): Parameter 질문 다시하겠습니다 죄송합니다;
본문
에러내용을 안써올렸다하시고
답변 달아주신부분이 이해도 살짝 안가서 지금 터진 에러만 다시 올려보겠습니다;
Warning: count(): Parameter must be an array or an object that implements Countable in /home/vuser02/2/5/*** 개인정보보호를 위한 휴대폰번호 노출방지 ***/www.brestbike.com/skin/board/booking/skin.function.php on line 431
노랑부분이 431에요.
정말 죄송합니다. 진짜 잘 몰라서 ㅠㅠ
list($y, $bg) = yoil_class($yoil); // 요일별 글자색상과 배경색에 관련된 class 명
$office_yoil = closed_Day(booking_holiday_array($off['mb_id']), $var); // 정기휴무일계산
$holiday = holiday_array($fr_day, $to_day, $off['id_no']); // 임시휴무일
$booking = booking_array($fr_day, $to_day, $off['id_no']); // 예약현황 배열
$booking_check = close_check($bo_table, $var, count($booking[$var]));
$temp_h = $holiday[$var]; // 임시휴무 (값이 1인 경우에만 임시휴무)
//echo "예약인원:".$booking_check;
$clock_ico =($temp_h=="2")? "<i class='fa fa-clock-o txt_red' aria-hidden='true'></i>":"";
$except_url = ($is_admin || $member['mb_id']==$off['mb_id'])? "onclick=\"except_pop('".$var."', '".$min."', '".$max."', '".$off['id_no']."', '".$bo_table."');\" style=\"cursor:pointer;\"":"";
if($var < $min || $var > $max || $office_yoil == $yoil) {
// 예약 가능일 이전과 이후 글자색상
$rst = ($var < $min)? "<li class='gray'>".(int)$day."일 ".$clock_ico."</li>":"<li class='li_day {$y}' ".$except_url.">".(int)$day."일 ".$clock_ico."</li>";
if($temp_h=="1") {
$rst .= "<li class='li_closed'><i class='fa fa-heart' aria-hidden='true'></i> 임시휴무</li>";
}
if($office_yoil == $yoil) {
$rst .= "<li class='li_closed'><i class='fa fa-heart' aria-hidden='true'></i> 정기휴무</li>";
}
} else {
$link = G5_BBS_URL."/write.php?bo_table={$bo_table}&select={$var}&office_no=".$off['id_no'];
$rst .= "<li class='li_day txt_green {$y}' ".$holiday_title." ".$except_url.">".(int)$day."일 ".$clock_ico."</li>";
// 임시휴무 - 값이 1이면 임시휴무( g5_write_booking.ex_kind 의 값)
if($temp_h=="1") {
$rst .= "<li class='li_closed'><i class='fa fa-heart' aria-hidden='true'></i> 임시휴무</li>";
} else {
if($booking_check==true) {
$rst .= "<li class='li_btn'><a href='{$link}'> 예약가능</a></li>";
} else {
$rst .= "<li class='li_closed2 txt_gray'> 예약마감</li>";
}
}
}
if($temp_h=="1") { unset($booking); } // 임시휴무이면 예약자리스트를 초기화하여 화면에 노출을 하지 않는다.
$boo = '';
for($k = 0; $k < $cnt; $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; // 예약자 리스트
return $arr;
}
답변 1
count($booking[$var]);
php 7.x부터는
해당 부분이 count함수로 사용되려면 배열이나 오브젝트같은 count함수를 사용할 수 있는 변수여야만 에러가 나오지 않습니다.
예전에는 해당 변수에 아무것도 없거나 배열이 아니면 0으로 처리되었지만 이젠 그렇지 않기 때문에
해당 $booking를 최초로 사용하는 지점 위에 $booking = array(); 같이
배열을 선언해줘야 합니다.
php는 자료형에 민감한 언어는 아니였지만 상위버전으로 갈수록 문법에 엄격해지고 있으니 생략하던 자료형 선언은 습관화 들이시는게 좋습니다.