>백엔드 개발 >PHP 튜토리얼 >PHP 소스 코드 9에 대한 간략한 설명: array_unshift, array_push 소개

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

不言
不言원래의
2018-06-28 16:58:532334검색

이 글에서는 주로 PHP 소스 코드 9: 특정 참조 값을 갖는 array_unshift, array_push 소개를 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 하겠습니다.

오늘은 구정입니다. 모든 친구들이 새해 복 많이 받으시고 좋은 일만 가득하시길 바랍니다!

PHP 소스 코드 9에 대한 간단한 이야기: array_unshift 소개, array_push

int array_unshift (array &array, Mixed var [, Mixed ...] )

#🎜 🎜#array_unshift() 전달된 셀을 배열 array의 시작 부분에 삽입합니다. 셀은 전체적으로 삽입되므로 들어오는 셀은 동일한 순서로 유지됩니다. 모든 숫자 키 이름은 0부터 다시 계산되도록 수정되며, 모든 텍스트 키 이름은 변경되지 않습니다.

배열 배열의 새 셀 수를 반환합니다.

standard/array.c의 2080행에서 이 함수의 C 구현을 볼 수 있습니다. PHP_FUNCTION(array_unshift)

프로그램은 먼저 입력 매개변수의 수를 결정합니다. 2보다 작으면 오류가 보고됩니다

그런 다음 첫 번째 매개변수가 배열인지 판단됩니다. 그렇지 않으면 오류가 보고되고
그런 다음 프로그램이 종료됩니다. new_hash = php_splice(Z_ARRVAL_P(스택), 0, 0, &args[1], argc-1, NULL);

HashTable* php_splice(HashTable *in_hash, int 오프셋, int 길이, zval * 호출 **list, int list_count, HashTable **removed)

이 함수는 array.c의 1861번째 줄에 있습니다.
먼저 in_hash(원본 해시테이블)의 일부를 새 해시테이블에 복사합니다. 주어진 오프셋과 길이를 기반으로 계산됩니다. array_unshif에 의해 지정된 오프셋과 길이는 모두 0이므로 새 해시 테이블에 요소가 복사되지 않습니다
그런 다음 목록을 반복하고 각 요소에 대해 zval을 생성한 다음 zend_hash_next_index_insert를 사용하여 삽입합니다. 그것을 새 해시테이블에 추가합니다
그런 다음 in_hash의 나머지 요소를 새 해시테이블에 복사합니다. 여기의 오프셋과 길이가 모두 0이므로 전체 해시테이블입니다
마지막으로 새로 생성된 해시테이블을 반환합니다#🎜 🎜#전체 프로세스는 목록의 데이터를 먼저 해시 테이블에 쓴 다음 이전 데이터를 해시 테이블에 기록하여 배열 앞에 요소를 삽입하는 것과 같습니다

그런 다음 해시 테이블을 삭제합니다. 이전 배열이 있는 곳에서 새 해시테이블을 새로 고치고 해시테이블의 내부 포인터를 재설정합니다.

반환 해시테이블의 요소 수(즉, 새로 생성된 배열의 길이)

#🎜🎜 #
int array_push (array &array, Mixed var [, Mixed ...] )
#🎜🎜 #array_push()는 배열을 스택으로 처리하고 전달된 변수를 배열의 끝에 푸시합니다. 배열의 길이는 스택에 푸시된 변수의 수에 따라 증가합니다.

다음과 동일한 효과:

   <?php$array[] = $var;?>

그리고 각 var에 대해 위의 작업을 반복합니다.


배열에 있는 새 셀의 총 개수를 반환합니다.

이 구현은 비교적 간단합니다.

주어진 매개변수를 직접 순회하고, 각 요소에 대한 zval을 생성하고, 해당 참조에 하나를 추가하고, 배열이 있는 해시테이블 끝에 추가합니다. 위치하고 있습니다.

해시테이블의 요소 수(즉, 새로 생성된 배열의 길이)를 반환합니다.

위 내용은 이 글의 전체 내용입니다. 학습하세요. PHP 중국어 웹사이트에 더 많은 관심을 가져주세요!

관련 권장 사항:

PHP 소스 코드 8에 대한 간단한 이야기: array_pop 소개, array_shift

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

PHP 소스 코드 6에 대한 간략한 토론: stream_get_wrappers 함수 정보# 🎜🎜#

위 내용은 PHP 소스 코드 9에 대한 간략한 설명: array_unshift, array_push 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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