본문 바로가기
Solve to troubleshoot

count(): Parameter must be an array or an object that implements Countable

by 살길바라냐 2020. 5. 18.
반응형

PHP 7.2로 업그레이드 된 이후부터 input을 배열로 처리하는 부분에 아래와 같은 에러를 발견했다.

count(): Parameter must be an array or an object that implements Countable

기존에는 아래와 같이 해도 0을 출력 했지만 PHP 7.2에서는 셀수 없는 경우 0이 아닌 에러가 발생하게 되었다.

<?php echo count(null)?>

동적으로 Input폼을 배열로 생성하는 기능이 있는 입력폼이라 Input폼이 있을 경우도 있고 없을 경우도 있기 때문에 어떻게든 해결 해야 했고, 그래서 해결한 생각해낸 해결책은 isset, empty, is_null을 이용해서 count에 넘겨줄 인자를 먼저 검사하는 것이다.

Codeigniter에서 isset과 empty를 이용해보니 $_POST['name']형태로만 써야 검사가 되는데 아무래도 Codeigniter 스러운 코드를 그대로 사용하고자 is_null을 사용했다.

 

[기존코드]

$cnt=count($this->input->post('item'));

 

[수정코드]

$cnt=is_null($this->input->post('item')) ? 0 : count($this->input->post('item'));

 

728x90