[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 Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题











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

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

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

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

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

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

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

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