[PHP源码阅读]array_push和array_unshift函数,arrayunshift_PHP教程
[PHP源码阅读]array_push和array_unshift函数,arrayunshift
在PHP中,在数组中添加元素也是一种很常用的操作,分别有在数组尾部和头部添加元素,看看PHP内部是如何实现数组插入的操作。
我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。
array_push
<p>int array_push ( array &$array , mixed $value1 [ , mixed $... ] )</p>
array_push函数将array参数看做一个栈,将传递进来的变量压倒array的尾部。array的长度随着被压进去的变量个数增加。下面的代码有意义的效果:
$array[] = $var;
如果只需要添加一个元素到数组,使用$array[] 这种方式更好,因为这样做不用调用函数。
运行示例
<span>$arr</span> = <span>array</span><span>(); </span><span>array_push</span>(<span>$arr</span>, 1, 2, 3); <span>//</span><span> return 3; $arr = [1, 2, 3]</span>
运行步骤
array_push函数相对比较简单,就相当于压栈操作,把array看做一个栈,然后对每一个参数,让其变成引用,引用数加一,然后添加它到数组的尾部。
内部实现的流程图如下:
$arr = array(1, 2, 3);
array_unshift($arr, 4, 5, 6); // 4 5 6 1 2 3
运行步骤
<p>1、调用php_splice将数据元素插入到数组头部,用新的哈希表替换就得哈希表并将其销毁</p> <p>2、如果操作后的stack等于运行时的符号表,则重置哈希表的内部指针</p> <p>3、stack指向新的哈希表,释放新的哈希表红箭,销毁就得哈希表</p>
源码解读
由上面的步骤可知,array_unshift的核心步骤是php_splice函数。对于array_unshift函数,php_splice实现时新建一个哈希表out_hash,将需要插入的list数据先插入到out_hash中,然后再把原来的数组数据写入到out_hash中,这样实现在数组前面插入数据元素的功能。
实现的效果图如下:
这次阅读源码过程中,同时也研究了PHP中的哈希表数据结构及一些API,也给自己补充了一些哈希表的知识。学习到了PHP底层是使用双向链表做哈希冲突的处理,获益匪浅。日后再做关于PHP数据结构的分享。
原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
如果本文对你有帮助,请点下推荐吧,谢谢^_^
最后再安利一下,我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。
更多源码文章,欢迎访问个人主页继续查看:hoohack

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Shift 키를 눌러 중국어와 영어 간에 전환할 수 없는 문제에 대한 해결 방법: 1. Win 키를 찾아 클릭하여 엽니다. 2. "설정"을 찾아 클릭하여 연 다음 "시간 및 언어"를 엽니다. 언어"를 선택하고 "옵션"을 엽니다. 4. "옵션"을 클릭한 다음 첫 번째 줄에서 "shift"를 선택합니다.

Mac의 Shift 키는 fn 키 위, Caps Lock 키 아래에 있는 키입니다. 이 키는 키보드의 가장 왼쪽에 있고, 오른쪽 하단에서 두 번째 키는 키보드의 Upshift 키입니다. 입력 방법을 전환하려면 "Ctrl+Shift" 키 조합을 통해 액세스할 수 있습니다.

ctrl+shift는 입력 방법을 전환하기 위한 조합 단축키입니다. "ctrl+shift"를 동시에 누르면 다른 키를 눌러 "ctrl+shift+N"을 동시에 누르는 등 다른 기능을 수행할 수도 있습니다. 새 폴더 등을 생성하는 시간 키

최근 일부 친구들이 어디를 눌러야 할지 몰라 키보드의 Shift 키가 잠겼다고 보고했습니다. 이 상황을 해결하는 방법은 무엇입니까? 여기에서 Win10에 대해 자세히 소개하겠습니다. 키보드 Shift 잠금을 해제하는 방법을 살펴보세요. 실행 취소 방법: 1. 왼쪽 하단에 있는 작업 표시줄에서 "시작"을 클릭하고 메뉴 목록에서 "설정"을 선택합니다. 2. 새 인터페이스로 들어간 후 "시간 및 언어" 옵션을 클릭합니다. 3. 그런 다음 왼쪽 열에서 "지역 및 언어"를 클릭한 다음 오른쪽의 "관련 설정"에서 "고급 키보드 설정"을 클릭합니다. 4. 그런 다음 "언어 표시줄 옵션"을 클릭합니다. 5. 창이 열리면 상단의 '고급 키 설정' 탭을 클릭하세요. 6. 마지막으로

Shift는 키보드의 왼쪽 하단에 있는 키보드 Shift 키라고도 하는 키보드의 Shift 키입니다. Shift 키에는 입력 방법 전환, 반각과 전각 간 빠른 전환, 연속 선택 등의 기능이 있습니다. 파일을 직접 삭제합니다.

이번 글에서는 바탕화면에서 단축키 Shift+우클릭을 이용해 Win11 시스템에서 안전모드로 쉽게 진입하는 방법을 소개합니다. 안전 모드는 컴퓨터 문제를 진단하고 해결하는 데 사용되는 특수 시작 모드로, 시스템에 오류가 발생하거나 정상적으로 시작되지 않을 때 시스템을 복구할 수 있는 방법을 제공합니다. 이 기사의 지침을 통해 독자는 이 바로 가기를 사용하여 Win11에서 안전 모드로 빠르게 진입하여 컴퓨터 시스템을 더 효과적으로 유지 관리하고 복구하는 방법을 배울 수 있습니다. 1. 바탕 화면의 빈 공간에서 [마우스 오른쪽 버튼 클릭]을 클릭하고 메뉴 항목이 열리면 [새로 만들기 - 텍스트 문서]를 선택합니다. 2. 새 텍스트 문서 창을 만들고 다음 코드를 입력합니다: WindowsRegistryEditorVersion5.00[ HKEY_CL

Microsoft는 오늘 Dev 채널의 WindowsInsider 프로젝트 멤버를 위한 Win11Build23419 미리 보기 업데이트를 출시했습니다. 이번 업데이트의 새로운 USB4 설정 페이지와 같은 많은 개선 사항 외에도 Microsoft에서 도입한 일부 새로운 기능/특징이 업데이트 로그에 기록되지 않았습니다. Microsoft는 Win11에 새로운 기능을 도입할 예정입니다. 사용자는 Win+Shift+R 단축키 조합을 사용하여 화면을 녹화할 수 있습니다. 하지만 이 기능은 아직 유효하지 않습니다. 이 키보드 단축키를 사용한 후에는 화면 녹화 UI 대신 일반 스크린샷 UI가 열립니다. 네티즌은 ViveTool 도구를 통해 위의 새로운 기능을 활성화할 수 있습니다. 1. GitHub 페이지에서 Vivetool 도구를 다운로드한 다음

"시프트 백도어" 공격으로부터 컴퓨터를 보호하려면 시스템 업데이트, 강력한 암호 및 다단계 인증 사용, 보안 교육, 방화벽 및 보안 소프트웨어, 정기적인 데이터 백업, 네트워크 보안 감사 및 모니터링, 보안 정책 및 보안을 포함한 보안 조치의 조합이 필요합니다. 권한 관리. 이러한 조치를 통해 시스템의 "교대 백도어" 공격 위험을 크게 줄이고 컴퓨터 시스템의 보안을 보장할 수 있습니다.
