php 코드 버전문제 질문 드립니다... 도와주세요 ㅠㅠ
본문
<?php
$list = ladder_ranking();
$count = count($list);
for ($i = 0; $i < $count; $i++) {
$rank = $i + 1;
$fa_photo = (isset($boset['ficon']) && $boset['ficon']) ? apms_fa($boset['ficon']) : '<i class="fa fa-user"></i>';
$mb_photo = apms_photo_url($list[$i]['mb_id']);
$wr_photo = ($mb_photo) ? "<img class='img-circle cursor' src='{$membericon}'>" : $fa_photo;
echo "
<li>
<a class='ranker-list-link'>
$wr_photo
<strong class='rank rank{$rank}'>{$rank}</strong> {$list[$i]['mb_nick']} <span> {$list[$i]['win']}승 {$list[$i]['lose']}패 최근 {$list[$i]['bestwinning']}연승 / 점수 {$list[$i]['rankval']}점</span>
</a>
</li>
";
}
?>
지금 이부분이 애러난다고 나오는데 어딜 수정해야될까요...
Warning: count(): Parameter must be an array or an object that implements Countable in /homepages/17/d817995208/htdocs/skin/board/basic-ladder/view.ladder.php on line 94
오류 내용입니다.
사다리게임을 받았는데 php버전 호환 문제인지 이런식으로 나오는데 어떤식으로 수정해야될지 감이 안오네요
혹시 이걸 수정 할 수 있는 그런 문법 볼 수 있는 사이트 있으면 알려주시면 감사합니다 ㅠ
현제 서버는 php 7.3버전 입니다.
답변 3
폴라베어님 답이 맞아요. 배열값이 없어서 그런거거든요. 근데
아마 저 에러 처리하는 코드가 스택오버플로우에 가보시면 국룰로
$count = is_null($list) ? 0 : count($list);
이럴 겁니다.
근데 대부분 for문 같은데서
for($i = 0; $i < count($array); $i++) { .... 이런식으로 쓰시잖아요.
그래서 전 그냥 함수를 하나 만들어서 교체해줬어요.
아래와 같은 함수를 하나 만들어서 common.lib.php 끝에 붙여넣고,
기존 count 함수가 사용된 곳을 찾아서 count() -> _count() 로 교체해줌.
function _count($array) {
return is_null($array) ? 0 : count($array);
}
좀 무식하긴 한데 ㅎㅎ.
아참 쓰는 김에 in_array() 함수도 배열이 null 인 경우 오류가 날수도 있을거에요.
이럴땐 마찬가지로 _in_array() 함수를 만들어서
function _in_array($value, $array) {
if(!$value) return false;
if(!$array) return false;
return in_array($value, $array);
}
슥삭슥삭...허접해서 죄송
!-->!-->!-->오류내용으로는 $list 변수가 카운트할수 있는 배열이거나 오브젝트여야하는데 전달된 형식이 아니라서 발생하는 걸로 보여집니다.
ladder_ranking() 함수에서 리턴값이 정상적으로 넘어오는지 확인하시고 해당 함수내에서 호환성 문제가 없는지 점검해보셔야할것 같습니다.
$list = ladder_ranking();
$count = count($list);
$count = is_arrary( $list)?count($list):0;