PHP count() 함수 사용 시 배열/객체 체크

프리터코더·2025년 5월 25일

php 문제 해결

목록 보기
6/79

문제 상황

count() 함수 사용 시 배열이나 객체가 아닌 값을 체크하려고 할 때 발생하는 Warning 메시지

안전한 count() 사용법

1. is_array() 활용

if (is_array($data) && count($data) > 0) {
    // 배열 처리 로직
}

2. is_countable() 사용 (PHP 7.3+)

if (is_countable($data) && count($data) > 0) {
    // 배열 또는 Countable 객체 처리
}

3. 배열 체크 함수 구현

function safeCount($data): int {
    return is_countable($data) ? count($data) : 0;
}

객체 처리

1. Countable 인터페이스 구현

class MyCollection implements Countable {
    private $items = [];
    
    public function count(): int {
        return count($this->items);
    }
}

2. 객체 배열 변환

$array = (array) $object;
$count = count($array);

베스트 프랙티스

1. 널 체크 포함

$count = ($data !== null && is_array($data)) ? count($data) : 0;

2. 타입 힌트 사용

function processArray(array $data): int {
    return count($data);
}

성능 최적화

  • 불필요한 반복 체크 피하기
  • 캐싱 활용
  • 타입 선언 활용

실제 사용 예시

// 배열 처리
$users = ['John', 'Jane', 'Bob'];
if (is_array($users) && count($users) > 0) {
    foreach ($users as $user) {
        echo $user . "\n";
    }
}

// 객체 처리
$collection = new MyCollection();
if ($collection instanceof Countable) {
    echo count($collection);
}
profile
일용직 개발자. freetercoder@gmail.com

0개의 댓글