目录
[PHP源码阅读]array_push和array_unshift函数,arrayunshift
array_push
运行示例
运行步骤
源码解读
首页 后端开发 php教程 [PHP源码阅读]array_push和array_unshift函数,arrayunshift_PHP教程

[PHP源码阅读]array_push和array_unshift函数,arrayunshift_PHP教程

Jul 12, 2016 am 08:51 AM
shift

[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看做一个栈,然后对每一个参数,让其变成引用,引用数加一,然后添加它到数组的尾部。

内部实现的流程图如下:

[PHP源码阅读]array_push和array_unshift函数,arrayunshift_PHP教程$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源码阅读]array_push和array_unshift函数,arrayunshift_PHP教程
这次阅读源码过程中,同时也研究了PHP中的哈希表数据结构及一些API,也给自己补充了一些哈希表的知识。学习到了PHP底层是使用双向链表做哈希冲突的处理,获益匪浅。日后再做关于PHP数据结构的分享。

 

原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

如果本文对你有帮助,请点下推荐吧,谢谢^_^

 

最后再安利一下,我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。

更多源码文章,欢迎访问个人主页继续查看:hoohack

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1129452.htmlTechArticle[PHP源码阅读]array_push和array_unshift函数,arrayunshift 在PHP中,在数组中添加元素也是一种很常用的操作,分别有在数组尾部和头部添加元素,...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

按shift不能切换中英文怎么办 按shift不能切换中英文怎么办 Feb 22, 2023 pm 04:13 PM

按shift不能切换中英文的解决办法:1、找到win键并点击打开;2、找到“设置”并点击打开,然后打开“时间和语言”;3、点击“区域和语言”,并打开“选项”;4、点击“选项”,然后选择第一行的“shift”即可。

mac的shift键是哪个键 mac的shift键是哪个键 Mar 13, 2023 pm 02:20 PM

mac的shift键是fn键上方、caps lock键下方的一个键,该键在键盘最左侧,由右下往上数第2个键;shift键是键盘中的上档转换键,可以通过“Ctrl+Shift”组合键来切换输入法。

ctrl加shift是什么 ctrl加shift是什么 Mar 09, 2023 pm 04:23 PM

ctrl加shift是一个用于切换输入法的组合快捷键;同时按住“ctrl+shift”时,还可以再按住其他的按键,以实现其他功能,比如同时按下“ctrl+shift+N”键,可以新建立一个文件夹等。

Win10键盘shift锁定怎么解除 Win10键盘shift锁定怎么解除 Mar 31, 2024 am 11:51 AM

近期有小伙伴反映自己不知道按到什么地方了,导致键盘上的shift键被锁定了,这是怎么回事呢,出现这种情况应该怎么解决呢,这里小编就给大家详细介绍一下Win10键盘shift锁定的解除方法,大家可以来看一看。解除方法:1、点击左下角任务栏中的"开始",选择菜单列表中的"设置"。2、进入到新的界面后,点击其中的"时间和语言"选项。3、接着点击左侧栏中的"区域和语言",随后点击右侧"相关设置"中的"高级键盘设置"4、然后点击"语言栏选项"。5、在打开的窗口中,点击上方中的"高级键设置"选项卡。6、最后

shift是哪个键盘 shift是哪个键盘 Feb 22, 2023 pm 02:51 PM

shift是键盘中的一个上档转换键,也叫键盘转换键,位于键盘左下角;shift键具有输入法切换、快速切换半角和全角、选择连续文件、直接删除文件等功能。

win11进入安全模式快捷键怎么设置? Shift+右键点击桌面进入安全模式技巧 win11进入安全模式快捷键怎么设置? Shift+右键点击桌面进入安全模式技巧 Apr 11, 2024 pm 06:22 PM

本文介绍了在Win11系统中,通过使用快捷键Shift+右键点击桌面,可以便捷地进入安全模式。安全模式是一种用于诊断和解决计算机问题的特殊启动模式,能够在系统遇到故障或无法正常启动时提供一种修复途径。通过本文的指导,读者可以学会如何利用这一快捷方式在Win11中快速进入安全模式,以便更好地维护和修复计算机系统。1、桌面空白处,点击【右键】,在打开的菜单项中,选择【新建-文本文档】;2、新建文本文档窗口,输入以下代码:WindowsRegistryEditorVersion5.00[HKEY_CL

Win11 Build 23419 预览版推出新功能:屏幕录制现在可通过 Win + Shift + R 快捷键完成 Win11 Build 23419 预览版推出新功能:屏幕录制现在可通过 Win + Shift + R 快捷键完成 Dec 21, 2023 pm 05:08 PM

微软于今天面向Dev频道的WindowsInsider项目成员,发布了Win11Build23419预览版更新。本次更新新增USB4设置页面等诸多改进之外,微软引入的部分新功能/新特性并未写入更新日志中。微软即将为Win11引入一项新功能/新特性,用户可以使用Win+Shift+R快捷组合方式来录制屏幕。只是目前该功能尚未生效,使用该键盘快捷键之后打开是常规截图UI,而非录制屏幕UI。网友可以通过ViveTool工具来启用上述新功能、新特性:1.从GitHub页面下载Vivetool工具,然后解

shift后门怎么用 shift后门怎么用 Nov 21, 2023 am 11:10 AM

保护计算机免受"shift 后门" 攻击需要综合使用多种安全措施,包括更新系统、使用强密码和多因素身份验证、安全教育、防火墙和安全软件、定期备份数据、网络安全审计和监控,以及安全策略和权限管理。通过这些措施,可以显着减少系统遭受 "shift 后门" 攻击的风险,并确保计算机系统的安全。

See all articles