Heim > Artikel > Backend-Entwicklung > Methode zum Zusammenführen von PHP-Arrays: array_merge VS array_push VS element append
In diesem Artikel stellen wir Ihnen drei Methoden zum Zusammenführen von PHP-Arrays vor: array_merge, array_push und die Element-Append-Methode, und vergleichen deren Leistung und Speicherverbrauch.
Um die Array-Zusammenführung in PHP zu implementieren, gibt es zwei häufig verwendete Methoden:
⒈ Code-Implementierung
/** 用 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;
⒉ Vergleich der Laufergebnisse
Array-Länge | array_merge | array_push | Element anhängen | |||
Speicherverbrauch (B) | Laufzeit (㎲) | Speicherverbrauch (B) | Laufzeit (㎲) | Speicherverbrauch (B) | Laufzeit (㎲) | |
20 | 4 33.200 | 25 | .433.200 | 19 | 50 | |
322 | 629.736 | 141 | 629.736 | 10 2 8.182 5.853.3921.022.328 | ||
⒊ Ursachenanalyse | Verwenden Sie array_merge code>, Bei jedem Aufruf muss neuer Speicherplatz für das Ergebnisarray von <code>array_merge zugewiesen werden (PHP verwendet einen Copy-on-Write-Mechanismus und array_merge schon). schreibt keine Parameter, sodass nicht bei jedem Aufruf Speicher für die Eingabeparameter neu zugewiesen werden muss. Mit zunehmender Länge des Arrays nimmt auch die Anzahl der Aufrufe von array_merge zu und die Anzahl der Speicherneuzuweisungen nimmt ebenfalls zu. Gleichzeitig nimmt die Länge des Ergebnisarrays weiter zu , und der Speicherplatz, der jedes Mal zugewiesen werden muss, nimmt ebenfalls zu. Mit zunehmender Größe wird auch viel Speicher verbraucht. Gleichzeitig führt die häufige Zuweisung/Zerstörung von Speicher zu einer Verschlechterung der PHP-Leistung.
|
Mit array_push müssen Sie dem Ergebnisarray nur einmal Speicher zuweisen, und dann werden Elemente an das Ergebnisarray angehängt. Die zugrunde liegende Implementierung des PHP-Arrays ist hashtable , und während der Initialisierung werden hashtable 8 Längen von bucket zugewiesen, jedem bucket code> Speichert ein Array-Element. Wenn der vorhandene <code>bucket aufgebraucht ist und Sie weiterhin Elemente an das Array anhängen, verdoppelt PHP die Anzahl der vorhandenen bucket . Verwenden Sie daher array_push Beim Anhängen von Elementen an das Ergebnisarray muss nicht jede Operation einen neuen bucket zuweisen, was die Anzahl der Speicherzuweisungen reduziert, die Programmlaufzeit beschleunigt und die PHP-Leistung verbessert.
|
||||
Empfohlenes Lernen: „ | PHP-Video-Tutorial“ |
Das obige ist der detaillierte Inhalt vonMethode zum Zusammenführen von PHP-Arrays: array_merge VS array_push VS element append. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!