目錄
[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