PHP 配列のマージ方法: array_merge VS array_push VS 要素の追加
この記事では、array_merge、array_push、要素追加メソッドという 3 つの PHP 配列マージ メソッドを紹介し、それらのパフォーマンスとメモリ消費量を比較します。
PHP で配列のマージを実装するには、一般的に使用される 2 つの方法があります:
- array_merge を直接使用するこの方法ではコードが実行されます。シンプルですが、メモリのオーバーヘッドが大幅に増加し、PHP のパフォーマンスが低下します。
- 配列を走査し、配列内の値を結果の配列に 1 つずつ追加します。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_push | 要素の追加 | メモリ消費量(B) | ||||
メモリ消費量(B) | 実行時間(㎲) | メモリ消費量(B) | 実行時間(㎲) | ##5 | ||
20 | 433,200 | 25 | 433,200 | 19 | 50 | |
322 | 629,736 | 141 | 629,736 | 102 | 500 | |
897,422 | 19,042,41611,294 | 19,042,416 | 8,182 | 5,000 | 3,479,599,136 | |
2,405,853,392 | 1,266,203 | 2,405,853,392 | 1,022,328 |
array_merge
を使用する場合、呼び出されるたびに、- array_mergeの結果配列に新しいメモリを割り当てる必要があります。
- スペース (PHP はコピーオンライトメカニズムを使用しており、
array_merge
を使用すると、結果配列にメモリを 1 回割り当てるだけで、要素が結果配列に追加されます。 PHP 配列の基礎となる実装ははパラメーターを書き込まないため、呼び出されるたびに入力パラメーター用にメモリを再割り当てする必要はありません)。配列の長さが増加すると、
array_mergeの呼び出し数も増加し、メモリの再割り当ての数も増加し、同時に結果の配列の長さも増加し続けます。 、毎回割り当てる必要があるメモリ空間も増加します。増加すると、多くのメモリを消費する必要があります。同時に、メモリの割り当て/破棄が頻繁に行われると、PHP のパフォーマンスが低下します。
array_push
hashtable - であり、
hashtable
と似ています。唯一の違いは、には初期化中に 8 つの長さの
bucketが割り当てられ、各
bucketには配列が格納されます要素。既存の
bucketが使い果たされた場合、配列に要素を追加し続けると、PHP は既存の
bucketの数を 2 倍にするため、追加するときは
array_pushを使用します。すべての操作で新しい
bucketを割り当てる必要があるわけではありません。これにより、メモリ割り当ての数が減り、プログラムの実行時間が短縮され、PHP のパフォーマンスが向上します。
要素を使用して追加する原理は、
array_push array_push - を使用するときに関数呼び出しがあることです。このメソッドは関数呼び出しを必要としないため、プログラムはより軽量に実行されます。
」推奨学習: 「
PHP ビデオ チュートリアル
以上がPHP 配列のマージ方法: array_merge VS array_push VS 要素の追加の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
