[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 后门" 攻击的风险,并确保计算机系统的安全。
