이 글은 주로 PHP 소스 코드 20: array_flip 및 array_reverse 함수에 대해 소개합니다. 이제 특정 참조 값이 있습니다. 이제 필요한 친구들이 참조할 수 있습니다.
PHP 소스 코드 20: array_flip ,array_reverse 함수에 대해
array_flip
(PHP 4, PHP 5)
array_flip — 배열의 키와 값을 교환합니다
Description
array array_flip (array trans)
array_flip()은 trans와 같은 역방향 배열을 반환합니다. 키 이름 값이 되고, trans의 값이 키 이름이 됩니다.
trans의 값은 유효한 키 이름이어야 합니다. 예를 들어 정수 또는 문자열이어야 합니다. 값의 유형이 잘못된 경우 경고가 발생하며 문제의 키/값 쌍은 취소되지 않습니다.
동일한 값이 여러 번 나타나는 경우 마지막 키 이름이 해당 값으로 사용되고 나머지는 모두 손실됩니다.
array_flip()이 실패하면 FALSE를 반환합니다.
소스 코드 설명: 배열이 있는 해시 테이블을 탐색하여 키를 꺼내고 새 ZVAL을 만든 다음 이전 배열의 값을 키로 사용하여 반환된 배열의 해시 테이블에 씁니다. 이전 값의 경우 LONG 및 STRING만 지원됩니다. 유형 판단을 위한 소스 코드는 다음과 같습니다.
if (Z_TYPE_PP(entry) == IS_LONG) { zend_hash_index_update(Z_ARRVAL_P(return_value), Z_LVAL_PP(entry), &data, sizeof(data), NULL); } else if (Z_TYPE_PP(entry) == IS_STRING) { zend_symtable_update(Z_ARRVAL_P(return_value), Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &data, sizeof(data), NULL);} else {zval_ptr_dtor(&data); /* will free also zval structure */php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can only flip STRING and INTEGER values!");}
지침
array array_reverse (array array [, bool presents_keys ] )
소스 코드 설명: 배열이 해시 테이블에 저장되고 해시 테이블은 이중 연결 목록을 지원하므로
그래서 프로그램은 이중 연결 목록의 마지막 요소부터 시작하여 앞으로 순회하며 프로세스의 모든 요소를 복사합니다. (즉, (*entry)->refcount++;)
이것을 반환된 배열이 있는 해시 테이블에 씁니다.
해시 테이블의 이중 연결 목록에 대해서는 이전 기사에서 소개한 해시 테이블의 정의를 볼 수 있습니다:
http://www.php.cn/php-weizijiaocheng-405316.html
PHP 소스 코드에 대한 간략한 토론 19: array_file, 범위 함수에 대해
PHP 소스 코드에 대한 간략한 토론 18: array_diff_key, array_diff_assoc, array_udiff_assoc에 대해 기능
위 내용은 PHP 소스 코드에 대한 간략한 토론 20: array_flip, array_reverse 함수에 대하여의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!