💻 자주 쓰는 PHP 함수

[PHP 함수] count() 함수 완벽 정리: 기본 개념부터 실전 활용까지

rhandy 2025. 3. 18. 07:10
728x90
 

PHP에서 배열(Array) 또는 객체(Object) 내부의 요소 개수를 구할 때 가장 많이 사용되는 함수가 바로 count() 함수입니다.
배열을 다룰 때 데이터의 개수를 확인하는 것은 매우 중요한 작업이며, 다차원 배열이나 객체에서도 활용될 수 있습니다.

이 글에서는 PHP count() 함수의 기본 개념부터 다차원 배열, 객체 처리, null 값 처리, 조건부 데이터 처리, 문자열 함수 비교, 유용한 팁과 주의사항까지 심도 있게 다뤄보겠습니다. 🚀


1. count() 함수란?

기본 문법

int count(mixed $var, int $mode = COUNT_NORMAL)

매개변수 설명

매개변수 설명

$var 배열 또는 객체 (요소 개수를 구할 대상)
$mode (선택) COUNT_NORMAL(기본값) 또는 COUNT_RECURSIVE

반환값

  • $var가 배열이면, 배열의 요소 개수를 반환
  • $var가 객체이면, 공개(public) 속성 개수를 반환
  • $var가 null 또는 존재하지 않는 값이면 0 반환
  • $var가 숫자, 문자열, 불리언 값이면 1 반환
  • PHP 8.0.0 이전에는 매개변수가 배열이나 Countable 객체가 아니면 경고를 발생시키고 1을 반환했으나, 이후 버전에서는 항상 0을 반환합니다.

2. count() 함수 기본 예제

🔹 배열의 요소 개수 구하기

배열의 길이를 확인하는 간단한 예제입니다.

<?php
$fruits = ["Apple", "Banana", "Cherry"];
echo count($fruits); // 3
?>

🔹 빈 배열의 개수 확인

<?php
$emptyArray = [];
echo count($emptyArray); // 0
?>

➡ 배열이 비어 있으면 0을 반환합니다.


3. 다차원 배열 처리 (COUNT_RECURSIVE 옵션)

배열이 **다차원 배열(배열 속 배열 포함)**일 경우, 기본적으로 count()는 최상위 배열의 요소 개수만 반환합니다.

🔹 다차원 배열 기본 개수 계산 (COUNT_NORMAL)

<?php
$foods = [
    "fruits" => ["Apple", "Banana", "Cherry"],
    "vegetables" => ["Carrot", "Broccoli"]
];

echo count($foods); // 2 (fruits, vegetables)
?>

🔹 다차원 배열 내부 요소 개수까지 포함하여 계산 (COUNT_RECURSIVE)

<?php
echo count($foods, COUNT_RECURSIVE); // 7
?>

COUNT_RECURSIVE를 사용하면 모든 하위 요소까지 포함한 개수를 반환합니다.
(2개의 최상위 요소 + fruits 배열 내 3개 + vegetables 배열 내 2개 = 총 7)


4. 객체(Object)에서 count() 사용하기

PHP에서 count()는 객체(Object)에도 사용할 수 있지만, public 속성만 계산합니다.

🔹 객체의 속성 개수 세기

<?php
class Car {
    public $brand = "Tesla";
    public $model = "Model S";
    private $year = 2023; // private 속성은 count()에 포함되지 않음
}

$myCar = new Car();
echo count((array) $myCar); // 2
?>

➡ public 속성만 개수로 계산되며, private 속성은 포함되지 않습니다.

🔹 get_object_vars()로 모든 속성 개수 가져오기

<?php
echo count(get_object_vars($myCar)); // 2
?>

➡ get_object_vars()를 사용하면 객체의 모든 public 속성을 배열로 변환하여 정확한 개수를 얻을 수 있습니다.


5. null 값 처리 (count()가 0을 반환하는 경우)

count()는 null 값을 받으면 항상 0을 반환합니다.

🔹 null 값 카운트 확인

<?php
$var = null;
echo count($var); // 0
?>

🔹 정의되지 않은 변수 처리

<?php
echo count($undefinedVar); // 0 (Notice: Undefined variable)
?>

주의: PHP 8.0.0부터 null 값은 항상 0을 반환합니다.
이 경우 is_countable() 함수를 사용하여 안전하게 확인해야 합니다.

<?php
if (is_countable($var)) {
    echo count($var);
} else {
    echo "이 변수는 count()를 사용할 수 없습니다.";
}
?>

6. 조건부 데이터 처리에서 count() 활용

🔹 배열이 비어 있지 않을 때만 실행

<?php
$users = ["Alice", "Bob"];

if (count($users) > 0) {
    echo "사용자가 있습니다.";
} else {
    echo "사용자가 없습니다.";
}
?>

🔹 특정 개수 이상일 때 경고 메시지 출력

<?php
$cartItems = ["Laptop", "Phone", "Tablet"];

if (count($cartItems) > 5) {
    echo "장바구니가 꽉 찼습니다.";
}
?>

🔹 조건에 따라 배열에 값을 추가하고 그 길이를 계산

<?php
$data = [];
if (isset($_GET['name'])) {
    $data[] = $_GET['name'];
}
if (isset($_GET['age'])) {
    $data[] = $_GET['age'];
}

echo "데이터 개수: " . count($data);
?>

7. count() vs 다른 PHP 문자열 및 배열 함수 비교

함수 설명

count() 배열 또는 객체의 요소 개수를 반환
sizeof() count()의 별칭(alias)로 기능이 동일함
array_count_values() 배열 내 각 요소의 등장 횟수를 계산
strlen() 문자열의 길이를 반환 (count()는 문자열 길이를 측정할 수 없음)

8. count() 사용 시 주의할 점

문자열에 count()를 사용하면 1을 반환

<?php
echo count("Hello"); // 1 (문자열을 배열로 취급하여 전체를 1개의 요소로 인식)
?>

PHP 8.0 이전까지는 null 값에 사용하면 Warning 발생 (PHP 8.0.0부터 null 값은 항상 0을 반환합니다.)

<?php
$var = null;
echo count($var); // Warning 발생 (PHP <8.0)
?>

➡ is_countable($var)로 확인 후 사용해야 함.

 

다차원 배열을 처리할 때는 COUNT_RECURSIVE 사용

  • 기본 count()는 최상위 요소 개수만 반환
  • COUNT_RECURSIVE를 사용하면 하위 요소까지 포함하여 개수 계산 가능

9. 유용한 팁 (count() 최적 활용법)

배열이 비어 있는지 확인할 때 empty() 대신 count() 사용 가능

if (count($array) === 0) { /* 배열이 비어 있음 */ }

배열이 특정 개수를 초과하는지 확인

if (count($users) > 10) {
    echo "사용자가 너무 많습니다.";
}

객체의 속성을 배열로 변환하여 정확한 개수 확인

echo count(get_object_vars($object));

10. 결론

PHP의 count() 함수는 배열 및 객체의 요소 개수를 확인하는 필수적인 함수입니다.
이를 활용하면 배열 개수 확인, 다차원 배열 처리, 객체 속성 개수 확인, 조건문에서 활용 등 다양한 작업을 효율적으로 수행할 수 있습니다.

 

📌 핵심 요약
✔️ count()는 배열과 객체의 요소 개수를 반환
✔️ 다차원 배열은 COUNT_RECURSIVE 옵션을 사용
✔️ null 값은 0 반환, PHP 8 이상에서는 TypeError 발생 가능
✔️ 문자열을 count()하면 1 반환됨 (주의 필요)

728x90