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

PHP 소스 코드 10에 대한 간략한 토론: array_keys, array_values ​​​​함수에 대하여

不言
不言원래의
2018-06-28 17:03:012173검색

이 글에서는 주로 PHP 소스 코드 10에 대해 소개합니다: array_keys 및 array_values ​​함수에 대해 특정 참조 값이 있으므로 이제 필요한 친구들이 참조할 수 있도록 공유합니다

#🎜 🎜#New Year 첫 번째 기사는 우선 모든 친구들에게 새해 복 많이 받으세요

오늘은 코드를 읽고 기념품으로 무언가를 쓰는 시간을 가졌습니다!

array array_keys (array input [, Mixed search_value [, bool strict]] )

array_keys() 입력 배열에 있는 숫자 또는 문자열의 키 이름을 반환합니다.

선택적 매개변수 search_value를 지정하면 해당 값의 키 이름만 반환됩니다. 그렇지 않으면 입력 배열의 모든 키가 반환됩니다. PHP 5부터 엄격한 매개변수를 사용하여 동등 비교(===)를 수행할 수 있습니다.

array_keys 함수의 구현은 표준/array.c 파일의 2416번째 줄에 있습니다. PHP_FUNCTION(array_keys)

프로그램은 일반적인 PHP 스타일을 따릅니다. 먼저 입력이 정확하고, 세 개의 매개변수가 있는 경우 크기를 결정하는 함수는 is_identical_function을 사용합니다(기본적으로 is_equal_function 함수가 사용됩니다)

그런 다음 반환된 배열을 초기화하고, 주어진 배열을 순회하고, 각각의 키 값을 가져옵니다. 이 키 값은 숫자와 문자열의 두 가지 유형으로 구분됩니다. 가장 중요한 기능은 해시 연산 함수 zend_hash_get_current_key_ex(현재 요소의 키 값 가져오기)

  ZEND_API int zend_hash_get_current_key_ex(HashTable *ht, char **str_index, uint *str_length, ulong *num_index, zend_bool duplicate, HashPosition *pos){
    Bucket *p; 
    p = pos ? (*pos) : ht->pInternalPointer; 
    IS_CONSISTENT(ht);     if (p) {
        if (p->nKeyLength) {    //    数字型的nKeyLength长度为0
            if (duplicate) {
                *str_index = estrndup(p->arKey, p->nKeyLength - 1);
            } else {
                *str_index = p->arKey;    //    /* arKey存储key名称(字符串类型的key)必须是最后一个成员,*/
            }
            if (str_length) {
                *str_length = p->nKeyLength;
            }
            return HASH_KEY_IS_STRING;
        } else {
            *num_index = p->h;    //    存储数字key值
            return HASH_KEY_IS_LONG;
        }
    }
    return HASH_KEY_NON_EXISTANT;}
#🎜입니다. 🎜#이 함수에 대한 이해는 주로 버킷 정의에 관한 것입니다.

에 대한 자세한 내용은 http://www.php.cn/php-weizijiaocheng-405316.html

#을 참조하세요. 🎜🎜#array array_values ​​​​(배열 입력)# 🎜🎜#

array_values()는 입력 배열의 모든 값을 반환하고 숫자로 색인화합니다.

array_values ​​​​함수는 기본적으로 array_keys의 함수 구현과 유사하며, zend_hash_get_current_key_ex 연산과 값 유형을 결정하는 연산도 부족합니다.

위는 이 내용의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 주목해 주세요!


관련 권장 사항:

PHP 소스 코드 9에 대한 간략한 설명: array_unshift, array_push 소개

# 🎜🎜 # PHP 소스 코드 8에 대한 간략한 토론: array_pop, array_shift 소개

PHP 소스 코드 7에 대한 간략한 토론: nl2br, ltrim, rtrim, 트림 기능 정보

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

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