이 글은 주로 PHP의 count 함수 예제에 대한 자세한 설명을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.
PHP 프로그래밍에서는 배열을 순회할 때 루프의 끝을 결정하기 위한 조건으로 배열의 길이를 계산해야 하는 경우가 많습니다. PHP에서는 배열 연산이 매우 빈번하므로 카운트(count)도 일반적으로 사용되는 함수입니다. . 아래에서 count 함수의 구체적인 구현을 살펴보겠습니다.
github의 PHP 소스 코드에 대한 더 자세한 주석이 있습니다. 관심있으신 분들은 한번 보시고 별점 부탁드립니다. PHP5.4 소스 코드 주석. 커밋 기록을 통해 추가된 주석을 확인할 수 있습니다.
count
int count ( mixed $array_or_countable [, int $mode = COUNT_NORMAL ] )
count 함수는 배열이나 객체에 있는 모든 요소의 수를 셉니다.
객체의 경우 SPL 확장을 설치하면 Countable 인터페이스를 구현하여 카운트 함수를 호출할 수 있습니다. Countable 인터페이스에는 count() 함수의 반환 값을 반환하는 Countable::count() 메서드가 하나만 있습니다.
매개변수 설명
mode
매개변수 모드가 COUNT_RECURSIVE(또는 1)로 설정된 경우 count()는 배열을 재귀적으로 계산합니다. 다차원 배열을 계산할 때 특히 유용합니다.
첫 번째 매개변수가 배열이 아니거나 Countable 인터페이스를 구현하는 객체가 아닌 경우 count 함수는 1을 반환합니다.
참고: count 함수는 무한 루프를 피하기 위해 재귀를 감지할 수 있지만, 무한 재귀가 발생하거나 예상보다 큰 값을 얻으면 E_WARNING 프롬프트를 반환합니다.
예제 실행
공통 애플리케이션
$arr1 = array(1, 2, 3, 4, 5); $val1 = count($arr1); // 5
다차원 배열
$arr2 = array('apple', 'banana', array('cat', 'camel'), 'dog'); $val2_1 = count($arr2); // 4 $val2_2 = count($arr2, 1); // 6
숫자와 문자열
$str = "hello world"; $int_val = 1; $val3 = count($str); // 1 $val4 = count($int_val); // 1
공통 객체
class User { private $name; private $address; } $user = new User(); $val5 = count($user); // 1 $val6 = count((array) $user); // 2
배열 유사 객체
class User extends ArrayObject { private $name; public function __construct() { $this->name = 'hhq'; } public function getName() { return $this->name; } public function count() { return 2; } } $user2 = new User(); $val7 = count($user2); // 2
구현할 수 있는 인터페이스 객체
class User implements Countable { public function count() { return 3; } } $user3 = new User(); $val8 = count($user3); // 3
실행 걸음
매개변수 유형을 감지하는 스위치 문을 입력하세요
NULL이면 직접 0을 반환합니다
배열인 경우 php_count_recursive 함수를 호출하여 배열 요소의 개수를 자동으로 선택합니다
객체인 경우 먼저 여부를 확인합니다. 배열과 유사한 객체입니다. 그렇다면 배열 객체의 수를 계산하세요
그렇지 않으면 객체가 Countable 인터페이스를 구현하면 Countable의 count 메서드를 호출하세요
마지막으로 정수 배열이나 문자열과 같은 다른 유형은 1을 반환합니다. .
소스 코드 해석
일반 배열인 경우 count 함수는 php_count_recursive 함수를 호출하여 해당 함수를 구현합니다.
현재 해시 버킷의 횟수는 다음과 같습니다. 재귀적으로 접근한 값이 1보다 크면 재귀를 의미하며 E_WARNING 오류를 반환합니다
그렇지 않으면 현재 배열 수준의 배열 요소 수를 계산하세요
재귀 매개 변수 옵션이 있으면 재귀 접근을 계속하세요
매개 변수가 객체 유형인 경우 구현에서는 먼저 핸들러가 정의되었는지 여부를 결정합니다. 핸들러는 실제로 함수인 count_elements 필드를 포함하는 PHP 커널의 객체 구조입니다. 객체가 일반적으로 배열 유사 객체로 알려진 배열처럼 동작하는 경우 count_elements 함수가 실행됩니다. 구체적인 구현은 클래스가 PHP의 ArrayObject를 상속하고 클래스에 count 함수를 구현한다는 것입니다. 클래스가 count 함수를 구현하지 않으면 count는 0을 반환하고, 그렇지 않으면 객체의 count 함수 반환 값을 반환합니다. 반환됩니다.
다른 데이터 유형인 경우
1, 문자열
2, 숫자
3인 경우 객체 분기의 판단이 둘 다 거짓인 경우, 즉 ArrayObject는 상속되지 않고 Countable 인터페이스는 구현되지 않았습니다.
이러한 유형은 모두 1을 반환합니다.
객체의 속성 개수를 계산해야 하는 경우 먼저 객체를 배열로 변환한 다음 count 함수를 호출할 수 있다는 점에 유의하세요. 예:
$count_value = count((array) $user);
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.
관련 권장 사항:
PHP 요청에 대한 자세한 설명 소켓 인터페이스 테스트 예
위 내용은 PHP의 카운트 함수 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!