이 기사에서는 특정 참조 값을 갖는 PHP 소스 코드 8: array_pop, array_shift에 대한 소개를 주로 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다. 휴일, 마무리해야 할 일도 있고 집에 갈 준비를 하는 사람도 있습니다.
올해 처음으로 집에 가지 않았습니다. . . . .
일주일 동안 관련 소스 코드를 살펴보지 않은 것 같습니다.
말도 안 되는 소리를 한 것 같네요. . .
standard/array.c에서 array_pop 및 array_shift 두 함수의 C 구현을 찾을 수 있습니다.
mixed array_pop ( array &array )
array_pop()은 배열 배열의 마지막 단위를 팝하고 반환하며 배열 배열을 변경합니다. 길이가 1씩 줄어듭니다. 배열이 비어 있거나 배열이 아닌 경우 NULL이 반환됩니다
참고: 이 함수를 사용한 후 배열 포인터가 재설정됩니다(reset())
혼합 array_shift(배열 & 배열)
array_shift()가 재설정됩니다. 배열의 첫 번째 요소가 제거되어 결과로 반환됩니다. 배열의 길이를 1씩 줄이고 다른 모든 셀을 1씩 앞으로 이동합니다. 모든 숫자 키 이름은 0부터 계산되도록 변경되며, 텍스트 키 이름은 변경되지 않습니다. array가 비어 있거나 배열이 아닌 경우 NULL이 반환됩니다.
참고: 이 함수를 사용한 후에는 배열 포인터가 재설정됩니다(reset())
두 함수 모두 구현에 사용됩니다
/* {{{ proto mixed array_pop(array stack) Pops an element off the end of the array */PHP_FUNCTION(array_pop){ _phpi_pop(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);}/* }}} */ /* {{{ proto mixed array_shift(array stack) Pops an element off the beginning of the array */PHP_FUNCTION(array_shift){ _phpi_pop(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);}
프로그램은 먼저 입력을 확인한 다음 배열에 요소가 있는지 확인합니다. 배열이 비어 있으면 바로 반환되고,
array_pop이면:==>zend_hash_internal_pointer_end
==>zend_hash_internal_pointer_end_ex(ht, NULL)
이때 해시테이블의 이중 연결 리스트의 마지막 요소가 직접 반환됩니다. ht->pInternalPointer = ht->pListTail ;
array_shift인 경우:
==>zend_hash_internal_pointer_reset_ex(ht, NULL)
이번에는 첫 번째를 직접 반환합니다. 해시 테이블의 이중 연결 목록 요소 ht->pInternalPointer = ht->pListHead;
반환 값을 가져오고
zend_hash_get_current_data ==> zend_hash_get_current_data_ex(ht, pData, NULL) p = pos ? (*pos) : ht->pInternalPointer;*pData = p->pData;를 통해 해시 테이블의 값을 가져온 다음 해시 테이블의 키 값을 삭제하고 호출합니다. 해시테이블을 재설정하는 zend_hash_internal_pointer_reset
이 재설정은 다음과 같습니다: ht->pInternalPointer = ht->pListHead;
즉, 현재 위치를 연결된 목록의 첫 번째 요소로 설정합니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요! A PHP 소스 코드에 대한 간략한 토론 5: 배열에 대하여 배열 생성
위 내용은 PHP 소스 코드에 대한 간략한 논의 8: array_pop, array_shift 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!