php 코드 버전문제 질문 드립니다... 도와주세요 ㅠㅠ

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
php 코드 버전문제 질문 드립니다... 도와주세요 ㅠㅠ

QA

php 코드 버전문제 질문 드립니다... 도와주세요 ㅠㅠ

답변 3

본문

<?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);
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,065
© SIRSOFT
현재 페이지 제일 처음으로