Jadual Kandungan
[PHP源码阅读]array_push和array_unshift函数,arrayunshift
array_push
运行示例
运行步骤
源码解读
Rumah php教程 php手册 [PHP源码阅读]array_push和array_unshift函数,arrayunshift

[PHP源码阅读]array_push和array_unshift函数,arrayunshift

Jun 13, 2016 am 08:39 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>
Salin selepas log masuk

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>
Salin selepas log masuk

运行步骤

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>
Salin selepas log masuk

源码解读

由上面的步骤可知,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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika saya tidak boleh bertukar antara bahasa Cina dan Inggeris dengan menekan shift? Apakah yang perlu saya lakukan jika saya tidak boleh bertukar antara bahasa Cina dan Inggeris dengan menekan shift? Feb 22, 2023 pm 04:13 PM

Penyelesaian kepada masalah yang menekan shift tidak boleh bertukar antara bahasa Cina dan Inggeris: 1. Cari kekunci menang dan klik untuk membuka 2. Cari "Tetapan" dan klik untuk membuka, kemudian buka "Masa dan Bahasa" 3. Klik "Wilayah dan Bahasa" dan buka "Pilihan" "; 4. Klik "Pilihan" dan kemudian pilih "shift" dalam baris pertama.

Apakah kunci shift pada mac Apakah kunci shift pada mac Mar 13, 2023 pm 02:20 PM

Kekunci shift Mac ialah kekunci di atas kekunci fn dan di bawah kekunci caps lock Kekunci ini berada di bahagian paling kiri papan kekunci, kekunci kedua dari bahagian bawah kanan kekunci anjakan dalam papan kekunci; dan boleh diakses melalui kombinasi kekunci " Ctrl+Shift" untuk menukar kaedah input.

Apakah itu ctrl plus shift? Apakah itu ctrl plus shift? Mar 09, 2023 pm 04:23 PM

ctrl+shift ialah kekunci pintasan gabungan untuk menukar kaedah input apabila menekan "ctrl+shift" pada masa yang sama, anda juga boleh menahan kekunci lain untuk mencapai fungsi lain, seperti menekan "ctrl+shift+N" pada masa yang sama; kunci masa untuk mencipta folder baharu, dsb.

Bagaimana untuk membuka kunci anjakan papan kekunci Win10 Bagaimana untuk membuka kunci anjakan papan kekunci Win10 Mar 31, 2024 am 11:51 AM

Baru-baru ini, beberapa rakan telah melaporkan bahawa mereka tidak tahu di mana untuk menekan, menyebabkan kekunci shift pada papan kekunci dikunci Apa yang berlaku Bagaimana untuk menyelesaikan situasi ini lihat cara membuka kunci kunci anjakan papan kekunci. Kaedah membuat asal: 1. Klik "Mula" dalam bar tugas di sudut kiri bawah dan pilih "Tetapan" dalam senarai menu. 2. Selepas memasuki antara muka baharu, klik pilihan "Masa dan Bahasa". 3. Kemudian klik "Wilayah dan Bahasa" di lajur kiri, kemudian klik "Tetapan Papan Kekunci Lanjutan" dalam "Tetapan Berkaitan" di sebelah kanan 4. Kemudian klik "Pilihan Bar Bahasa". 5. Dalam tetingkap yang terbuka, klik tab "Tetapan Kekunci Lanjutan" di bahagian atas. 6. Akhirnya

Papan kekunci yang manakah adalah shift? Papan kekunci yang manakah adalah shift? Feb 22, 2023 pm 02:51 PM

Shift ialah kekunci anjakan dalam papan kekunci, juga dipanggil kekunci anjakan papan kekunci, terletak di sudut kiri bawah papan kekunci kekunci anjakan mempunyai fungsi seperti menukar kaedah input, menukar dengan cepat antara lebar separuh dan lebar penuh, memilih berturut-turut; fail, dan memadam fail secara terus.

Bagaimana untuk menetapkan kekunci pintasan untuk memasuki mod selamat dalam win11 Shift+klik kanan pada desktop untuk memasuki mod selamat Bagaimana untuk menetapkan kekunci pintasan untuk memasuki mod selamat dalam win11 Shift+klik kanan pada desktop untuk memasuki mod selamat Apr 11, 2024 pm 06:22 PM

Artikel ini memperkenalkan cara untuk memasuki mod selamat dengan mudah dalam sistem Win11 dengan menggunakan kekunci pintasan Shift+klik kanan pada desktop. Mod selamat ialah mod permulaan khas yang digunakan untuk mendiagnosis dan menyelesaikan masalah komputer Ia menyediakan cara untuk membaiki sistem apabila ia menghadapi kerosakan atau gagal dimulakan seperti biasa. Melalui panduan artikel ini, pembaca boleh mempelajari cara menggunakan pintasan ini untuk memasuki mod selamat dengan cepat dalam Win11 untuk menyelenggara dan membaiki sistem komputer dengan lebih baik. 1. Klik [klik kanan] pada ruang kosong pada desktop, dan dalam item menu yang terbuka, pilih [Baharu - Dokumen Teks] 2. Buat tetingkap dokumen teks baharu dan masukkan kod berikut: WindowsRegistryEditorVersion5.00[ HKEY_CL

Versi pratonton Win11 Build 23419 memperkenalkan ciri baharu: Rakaman skrin kini boleh diselesaikan melalui kekunci pintasan Win + Shift + R Versi pratonton Win11 Build 23419 memperkenalkan ciri baharu: Rakaman skrin kini boleh diselesaikan melalui kekunci pintasan Win + Shift + R Dec 21, 2023 pm 05:08 PM

Microsoft hari ini mengeluarkan kemas kini pratonton Win11Build23419 untuk ahli projek WindowsInsider dalam saluran Dev. Sebagai tambahan kepada banyak penambahbaikan seperti halaman tetapan USB4 baharu dalam kemas kini ini, beberapa fungsi/ciri baharu yang diperkenalkan oleh Microsoft belum ditulis ke dalam log kemas kini. Microsoft akan memperkenalkan fungsi/ciri baharu kepada Win11 Pengguna boleh menggunakan kombinasi pintasan Win+Shift+R untuk merakam skrin. Walau bagaimanapun, fungsi ini masih belum berkesan Selepas menggunakan pintasan papan kekunci ini, UI tangkapan skrin biasa akan dibuka dan bukannya UI rakaman skrin. Netizen boleh mendayakan fungsi dan ciri baharu di atas melalui alat ViveTool: 1. Muat turun alat Vivetool daripada halaman GitHub, dan kemudian

Cara menggunakan pintu belakang shift Cara menggunakan pintu belakang shift Nov 21, 2023 am 11:10 AM

Melindungi komputer daripada serangan "shift backdoor" memerlukan gabungan langkah keselamatan, termasuk mengemas kini sistem, menggunakan kata laluan yang kukuh dan pengesahan berbilang faktor, pendidikan keselamatan, tembok api dan perisian keselamatan, sandaran data biasa, audit dan pemantauan keselamatan rangkaian, dan Dasar keselamatan dan pengurusan kebenaran. Melalui langkah-langkah ini, anda boleh mengurangkan dengan ketara risiko sistem anda untuk serangan "pintu belakang beralih" dan memastikan keselamatan sistem komputer anda.

See all articles