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'));
PHP가 버젼업 될때마다 점점 엄격해지는 것 같다.
새댓글 등록