[PHP源码阅读]array_push和array_unshift函数,arrayunshift
[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 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제









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

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

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

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

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

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

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

많은 사용자들이 Win11 시스템을 업그레이드한 후 Shiy6ong 단축키에서 충돌을 발견했습니다. 그러면 Microsoft Pinyin 입력 방법이 Shift+F6 단축키를 차지하는 문제를 해결하는 방법은 무엇입니까? 이 사이트에서는 사용자를 위한 구체적인 작업 방법을 신중하게 소개합니다. Shift+F6 단축키를 차지하는 Win11 Microsoft Pinyin 입력 방식 문제 해결 방법 분석 1. Win11 시스템 설정 - 시간 및 언어 - 언어 및 지역 - 옵션 - Microsoft Pinyin - 일반을 입력합니다. 2. 켜기: 호환성 - 이전 버전의 Microsoft 입력 방법을 사용합니다.
