PHP数组合并方法:array_merge VS array_push VS 元素追加
本篇文章给大家分享三种PHP数组合并方法:array_merge、array_push和元素追加法,并比较一下它们的性能和内存消耗。

在 PHP 中实现数组的合并,常用的方法有两种:
- 直接使用 array_merge ,这种方法虽然做到了代码的简洁,但却大大增加了内存的开销,同时拖慢了 PHP 的性能。
- 对数组进行遍历,将数组中的值逐个追加到结果数组中,相较直接使用 array_merge ,这种方法虽然增加了代码量,却降低了 PHP 的内存开销,同时提升了性能。
⒈ 代码实现
/**
用 PHP 实现将一个二维数组合并为一个一维数组
*/
// 数组的长度
$len = $argv[1];
$start = 0;
$arr = [];
// 数组初始化
while ($start < $len) {
$arr[$start] = range(1, $len);
$start ++;
}
// 采用 array_merge 的方式合并数组
function merge1 (array $input)
{
$results = [];
foreach ($input as $item) {
$results = array_merge($results, $item);
}
return $results;
}
// 采用 array_push 的方式合并数组
function merge2 (array $input)
{
$results = [];
foreach ($input as $item) {
foreach ($item as $v) {
array_push($results, $v);
}
}
return $results;
}
// 采用元素追加的方式合并数组
function merge3(array $input)
{
$results = [];
foreach ($input as $item) {
foreach ($item as $v) {
$results [] = $v;
}
}
return $results;
}
echo microtime(), PHP_EOL;
$res = merge3($arr);
echo microtime(), PHP_EOL;
echo memory_get_usage(), PHP_EOL;
echo memory_get_peak_usage(), PHP_EOL;⒉ 运行结果比较
| 数组长度 | array_merge | array_push | 元素追加 | |||
| 内存消耗(B) | 运行时间(㎲) | 内存消耗(B) | 运行时间(㎲) | 内存消耗(B) | 运行时间(㎲) | |
| 5 | 432,440 | 20 | 433,200 | 25 | 433,200 | 19 |
| 50 | 764,704 | 322 | 629,736 | 141 | 629,736 | 102 |
| 500 | 27,434,944 | 897,422 | 19,042,416 | 11,294 | 19,042,416 | 8,182 |
| 5,000 | 3,479,599,136 | 904,476,129 | 2,405,853,392 | 1,266,203 | 2,405,853,392 | 1,022,328 |
⒊ 原因分析
使用
array_merge,每调用一次,都需要为array_merge的结果数组分配新的内存空间(PHP 采用的是写时复制的机制,而array_merge不会对参数进行写操作,所以每次调用时并不需要为入参重新分配内存)。随着数组长度的增加,调用array_merge的次数也会增加,重新分配内存的次数也会增加,同时结果数组的长度不断增加,每次所需要分配的内存空间也会随着增加,这就需要消耗大量的内存。同时,频繁的分配/销毁内存,导致 PHP 的性能下降。使用
array_push,只需要对结果数组分配一次内存,之后会一直往结果数组中追加元素。PHP 数组的底层实现方式为hashtable,并且在初始化时会为hashtable分配 8 个长度的bucket,每个bucket存储一个数组元素。当现有的bucket用完之后,如果还要继续往数组中追加元素,那么 PHP 会将现有的bucket数量翻倍,所以,使用array_push往结果数组中追加元素时,并不是每次操作都需要分配新的bucket,这样就减少了分配内存的次数,同时加快了程序运行时间,提升了 PHP 性能。使用元素追加的方式,原理与
array_push类似,唯一的区别在于使用array_push会有函数调用,而元素追加的方式不需要函数调用,这样程序运行会更轻量。
推荐学习:《PHP视频教程》
Atas ialah kandungan terperinci PHP数组合并方法:array_merge VS array_push VS 元素追加. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Clothoff.io
Penyingkiran pakaian AI
Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!
Artikel Panas
Alat panas
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Topik panas
Panduan ringkas untuk persediaan php
Jul 18, 2025 am 04:25 AM
Kunci untuk menubuhkan PHP adalah untuk menjelaskan kaedah pemasangan, mengkonfigurasi php.ini, sambungkan ke pelayan web dan membolehkan sambungan yang diperlukan. 1. Pasang PHP: Gunakan Apt untuk Linux, Homebrew untuk Mac, dan XAMPP disyorkan untuk Windows; 2. Konfigurasi php.ini: Laraskan laporan ralat, muat naik sekatan, dan lain -lain dan mulakan semula pelayan; 3. Gunakan pelayan web: Apache menggunakan mod_php, nginx menggunakan php-fpm; 4. Memasang sambungan yang biasa digunakan: seperti mysqli, json, mbstring, dan lain -lain untuk menyokong fungsi penuh.
Mengulas kod dalam php
Jul 18, 2025 am 04:57 AM
Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.
Petua untuk menulis komen php
Jul 18, 2025 am 04:51 AM
Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.
Meningkatkan kebolehbacaan dengan komen
Jul 18, 2025 am 04:46 AM
Kunci untuk menulis komen yang baik adalah untuk menjelaskan "mengapa" daripada hanya "apa yang dilakukan" untuk meningkatkan kebolehbacaan kod. 1. Komen harus menjelaskan sebab -sebab logik, seperti pertimbangan di sebalik pemilihan nilai atau pemprosesan; 2. Gunakan anotasi perenggan untuk logik kompleks untuk meringkaskan idea keseluruhan fungsi atau algoritma; 3. Secara kerap mengekalkan komen untuk memastikan konsistensi dengan kod, elakkan mengelirukan, dan padamkan kandungan ketinggalan zaman jika perlu; 4. Secara serentak periksa komen semasa mengkaji semula kod, dan merekodkan logik awam melalui dokumen untuk mengurangkan beban komen kod.
Belajar PHP: Panduan Pemula
Jul 18, 2025 am 04:54 AM
Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech
Tutorial pemasangan php cepat
Jul 18, 2025 am 04:52 AM
Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3
Menulis komen php yang berkesan
Jul 18, 2025 am 04:44 AM
Komen tidak boleh cuai kerana mereka ingin menjelaskan sebab-sebab kewujudan kod dan bukannya fungsi, seperti keserasian dengan antara muka lama atau sekatan pihak ketiga, jika tidak, orang yang membaca kod itu hanya boleh bergantung pada meneka. Bidang yang mesti dikomentari termasuk penghakiman bersyarat kompleks, logik pengendalian kesilapan khas, dan sekatan pintasan sementara. Cara yang lebih praktikal untuk menulis komen ialah memilih komen tunggal atau menyekat komen berdasarkan tempat kejadian. Gunakan komen blok dokumen untuk menerangkan parameter dan pulangan nilai pada permulaan fungsi, kelas, dan fail, dan simpan komen dikemas kini. Untuk logik yang kompleks, anda boleh menambah garis kepada yang sebelumnya untuk meringkaskan niat keseluruhan. Pada masa yang sama, jangan gunakan komen untuk menutup kod, tetapi gunakan alat kawalan versi.
Menguasai Komen Blok PHP
Jul 18, 2025 am 04:35 AM
Phpblockcommentsareusfulfritingmulti-lineexplanations, temporarilydisablingcode, andgeneratingdocumentation.theyshouldnotbenestedorleftunclosed.blockcommentshelpindocumentingfunctionswithphpdoc, whoToolslikePhpePhipeForauseForaSeforausforausforna


