>  기사  >  백엔드 개발  >  PHP 소스 코드에 대한 간략한 토론 20: array_flip, array_reverse 함수에 대하여

PHP 소스 코드에 대한 간략한 토론 20: array_flip, array_reverse 함수에 대하여

不言
不言원래의
2018-06-28 17:44:341849검색

이 글은 주로 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_reverse

(PHP 4, PHP 5)

array_reverse — 다음과 같은 배열을 반환합니다. 역순의 단위

지침
array array_reverse (array array [, bool presents_keys ] )

array_reverse()는 배열 배열을 입력으로 받아들이고 reverse_keys가 TRUE인 경우 셀이 포함된 새 배열을 반환합니다. 키 이름은 유지됩니다.

소스 코드 설명: 배열이 해시 테이블에 저장되고 해시 테이블은 이중 연결 목록을 지원하므로
그래서 프로그램은 이중 연결 목록의 마지막 요소부터 시작하여 앞으로 순회하며 프로세스의 모든 요소를 ​​복사합니다. (즉, (*entry)->refcount++;)
이것을 반환된 배열이 있는 해시 테이블에 씁니다.

해시 테이블의 이중 연결 목록에 대해서는 이전 기사에서 소개한 해시 테이블의 정의를 볼 수 있습니다:
http://www.php.cn/php-weizijiaocheng-405316.html

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

관련 권장사항:

PHP 소스 코드에 대한 간략한 토론 19: array_file, 범위 함수에 대해

PHP 소스 코드에 대한 간략한 토론 18: array_diff_key, array_diff_assoc, array_udiff_assoc에 대해 기능

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

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