>  기사  >  백엔드 개발  >  PHP 소스 코드에 대한 간략한 논의 8: array_pop, array_shift 소개

PHP 소스 코드에 대한 간략한 논의 8: array_pop, array_shift 소개

不言
不言원래의
2018-06-28 16:55:012084검색

이 기사에서는 특정 참조 값을 갖는 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(Z_ARRVAL_PP(stack));

==>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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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