정의 및 사용 방법
- PHP 버전
- 4+
count() 함수는
주어진 배열의 요소 개수를 계산해서(count) 정수로 반환합니다.
이 함수는 배열 외에도 Countable 인터페이스를 구현하는 객체의 요소 개수를 계산해서 정수로 반환합니다.
"Countable 인터페이스를 구현하는 객체의 요소 개수 계산하기"를 참조하세요.
기본 예제
/* 일반적인 숫자 인덱스 배열 */
$array_1 = [1, 2, 3, 4, 5];
var_dump(count($array_1)); // int(5)
$array_2 = [];
var_dump(count($array_2)); // int(0)
$array_2[0] = 1;
$array_2[1] = 2;
var_dump(count($array_2)); // int(2)
/* 연관 배열 */
$associative_array = [
'name' => '홍길동',
'age' => 30,
'city' => '서울'
];
var_dump(count($associative_array)); // int(3)
/* 다차원 배열 */
$multi_dimensional_array = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
var_dump(count($multi_dimensional_array)); // int(3)
// 다차원 배열의 모든 하위 배열 요소까지 포함한 개수를 반환
var_dump(count($multi_dimensional_array, 1)); // int(12)
구문
count(Countable|array $value, int $mode = COUNT_NORMAL): int
매개변수
$value |
요소 개수를 계산할 대상인 배열이나 Countable 인터페이스를 구현하는 객체입니다. |
|---|---|
$mode |
옵션.
이 매개변수는 COUNT_NORMAL(또는 0)이나 COUNT_RECURSIVE(또는 1) 상수 중 하나를 가질 수 있습니다. 기본값은 COUNT_NORMAL입니다.
|
반환 값
요소의 개수를 정수로 반환합니다.
PHP 8.0.0 버전 이전에는
매개변수가 배열이나 Countable 인터페이스를 구현하는 객체가 아니면 함수는 값의 요소 개수를 반환하지 않습니다. 그 대신 다음 규칙에 따라 동작합니다.
PHP 8.0.0 버전부터는
매개변수가 배열이나 Countable 인터페이스를 구현하는 객체가 아니면 TypeError 예외가 발생합니다.
이것은 이전에 null이 아닌 값에 대해 항상 1을 반환하던 동작에서 변경된 사항입니다. 이 변경으로 함수의 동작이 더 명확해졌으며, 이전 버전에서 발생할 수 있었던 혼란을 줄였습니다.
다차원 배열에서 요소 개수 계산 방식 설정
배열 안에 하위 배열을 포함하는 다차원 배열(multidimensional array)은 배열 안에 요소로 배열이 있고, 그 배열 안에 요소가 있는 형태인데 요소의 개수를 셀 때 내부 배열의 요소들까지 모두 포함한 총 요소의 개수를 계산하려면 count() 함수의 두 번째 매개변수의 값을 COUNT_RECURSIVE나 1로 설정하면 됩니다.
이렇게 설정하면 count() 함수는 다차원 배열의 모든 요소를 재귀적으로 탐색하여 내부 배열의 요소도 포함하여 총 요소의 개수를 반환합니다.
$multi_dimensional_array = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
var_dump(count($multi_dimensional_array)); // int(3)
// 다차원 배열의 모든 배열 요소의 개수 계산
var_dump(count($multi_dimensional_array, 1)); // int(12)
변경 이력
| 버전 | 설명 |
|---|---|
| 8.0.0 | count() 함수에 배열이나 Countable 인터페이스를 구현하지 않은 객체를 $value로 전달할 경우, 이제 TypeError 예외를 던집니다. (Fatal error를 발생시킴) |
| 7.2.0 | count() 함수에 배열이나 Countable 인터페이스를 구현하지 않은 객체를 $value로 전달할 경우, 이제 경고(Warning)를 발생시킵니다. |
Countable 인터페이스를 구현하는 객체의 요소 개수 계산하기
count() 함수는 배열 외에도 Countable 인터페이스를 구현하는 객체의 요소 개수를 계산하여 정수로 반환합니다.
간단한 예제로 Countable 인터페이스를 구현하는 클래스를 만들어보겠습니다. 이 클래스는 문자열의 길이를 반환하는 메서드를 포함합니다. 그리고 Countable 인터페이스를 구현하여 해당 클래스의 요소 개수를 계산할 수 있도록 합니다.
class String_Length_Counter implements Countable {
private $string;
public function __construct(string $string) {
$this->string = $string;
}
public function get_string_length(): int {
return strlen($this->string);
}
// Countable 인터페이스의 메서드를 구현
public function count(): int {
return $this->get_string_length();
}
}
// String_Length_Counter 객체 생성
$counter = new String_Length_Counter("Hello, world!");
// count() 함수를 이용하여 객체의 요소 수를 계산
echo "문자열의 길이: " . count($counter); // 출력: 13
이 예제에서는 String_Length_Counter 클래스가 Countable 인터페이스를 구현하여 count() 메서드를 정의합니다.
이 메서드는 문자열의 길이를 반환하는 get_string_length() 메서드를 호출하여 값을 반환합니다. 그리고 count() 함수를 이용하여 String_Length_Counter 객체의 길이를 계산합니다.