>  기사  >  백엔드 개발  >  PHP 소스 코드 16에 대한 간략한 토론: array_count_values ​​​​함수에 대하여

PHP 소스 코드 16에 대한 간략한 토론: array_count_values ​​​​함수에 대하여

不言
不言원래의
2018-06-28 17:31:322437검색

이 글은 주로 PHP 소스 코드에 대한 간단한 토론을 소개합니다. 16: 특정 참조 값을 갖는 array_count_values ​​​​함수에 대해 이제 필요한 친구들이 참조할 수 있도록 공유합니다.

PHP 소스 코드에 대한 간단한 토론입니다. 16: array_count_values ​​​​함수에 대하여

array_count_values

(PHP 4, PHP 5)
array_count_values ​​​​— 배열에 있는 모든 값의 발생 횟수를 계산합니다
Description

array array_count_values ​​​​(배열 입력)

array_count_values()는 입력 배열의 값을 사용하는 배열을 반환합니다. 키 이름으로 이 값이 입력 배열에 나타나는 횟수가 값으로 사용됩니다.

소스 프로그램 설명:
소스 코드의 두 주석은 이 함수의 구현을 설명합니다

  /* Initialize return array */
    array_init(return_value);     /* Go through input array and add values to the return array */

그러나 주의해야 할 몇 가지 세부 사항이 있습니다:

1 이 함수는 문자열과 숫자만 인식할 수 있으므로. 프로그램 다음과 유사한 문이 사용됩니다

if (Z_TYPE_PP(entry) == IS_LONG) {} else if (Z_TYPE_PP(entry) == IS_STRING) {} else {
            php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can only count STRING and INTEGER values!");}

2. 순회 과정에서 먼저 존재하지 않는지 확인합니다. 이 확인 과정은 문자열과 숫자에 대해서도 다르지만 결국 모두 해시에 대한 작업입니다. table

코드에서 zval의 초기화는 매크로 zval *data를 사용합니다. MAKE_STD_ZVAL(data);
이 매크로 추적의 정의는 다음과 같습니다.

MAKE_STD_ZVAL(data);==> #define MAKE_STD_ZVAL(zv)                 \    zend.h 586行
    ALLOC_ZVAL(zv); \
    INIT_PZVAL(zv); ==> #define ALLOC_ZVAL(z)    \
    ZEND_FAST_ALLOC(z, zval, ZVAL_CACHE_LIST)    zend_alloc.h 165行 ==> #define ZEND_FAST_ALLOC(p, type, fc_type)    \
    (p) = (type *) emalloc(sizeof(type))                   zend_alloc.h  152行 ==> #define emalloc(size)                        _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)    zend_alloc.h 56行==> ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)      zend_alloc.c 2288行 程序实现
 ==>  #define INIT_PZVAL(z)        \                 zend.h 576行
    (z)->refcount = 1;        \    (z)->is_ref = 0;

EOF

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 자세한 내용은 PHP 중국어 홈페이지를 참고해 주세요!

관련 권장 사항:

PHP 소스 코드에 대한 간략한 토론 15: array_walk 함수에 대해

PHP 소스 코드에 대한 간략한 토론 14: array_combine 함수에 대해

PHP 소스에 대한 간략한 토론 코드 13: array_change_key_case, array_chunk 소개

위 내용은 PHP 소스 코드 16에 대한 간략한 토론: array_count_values ​​​​함수에 대하여의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.