count()
함수의 정의 및 사용법
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()
함수의 형식은 다음과 같습니다.
구문
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
객체가 아니면 함수는 값의 요소 수를 반환하지 않습니다. 그 대신에 다음과 같은 규칙에 따라 동작합니다
- 만약 매개변수가
null
이면, 함수는0
을 반환합니다. - 그렇지 않으면, 함수는
1
을 반환합니다.
PHP 8.0.0 버전부터는
매개변수가 배열이나 Countable
객체가 아니면 함수는 항상 0
을 반환합니다. 이것은 이전에 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)
Countable
객체의 요소 개수 계산
count()
함수는 배열 외에도 Countable
인터페이스를 구현하는 객체의 요소 개수를 계산해서 정수로 반환합니다.
간단한 예제로 Countable
인터페이스를 구현하는 클래스를 만들어보겠습니다. 이 클래스는 문자열의 길이를 반환하는 메서드를 포함합니다. 그리고 Countable
인터페이스를 구현하여 해당 클래스의 요소 수를 계산할 수 있도록 합니다.
class String_Length_Counter implements Countable {
private $string;
public function __construct($string) {
$this->string = $string;
}
public function get_string_length() {
return strlen($this->string);
}
// Countable 인터페이스의 메서드를 구현
public function count() {
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
객체의 요소 수를 계산합니다.