이 글에서는 주로 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);
이 함수는 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 소스 코드 7에 대한 간략한 토론: nl2br, ltrim, rtrim, Trim 기능 정보
PHP 소스 코드 6에 대한 간략한 토론: stream_get_wrappers 함수 정보# 🎜🎜#
위 내용은 PHP 소스 코드 9에 대한 간략한 설명: array_unshift, array_push 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!