Heim  >  Artikel  >  Backend-Entwicklung  >  Methode zum Zusammenführen von PHP-Arrays: array_merge VS array_push VS element append

Methode zum Zusammenführen von PHP-Arrays: array_merge VS array_push VS element append

青灯夜游
青灯夜游nach vorne
2021-07-07 19:13:133683Durchsuche

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.

Methode zum Zusammenführen von PHP-Arrays: array_merge VS array_push VS element append

Um die Array-Zusammenführung in PHP zu implementieren, gibt es zwei häufig verwendete Methoden:

  • Verwenden Sie array_merge direkt, erhöht jedoch den Speicheraufwand erheblich und verlangsamt die PHP-Leistung.
  • Durchlaufen Sie das Array und hängen Sie die Werte im Array einzeln an das Ergebnisarray an. Im Vergleich zur direkten Verwendung von array_merge erhöht diese Methode zwar die Codemenge, verringert jedoch den Speicheraufwand von PHP und verbessert die Leistung.

⒈ 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

432.440. 764.70410 2 8.182 5.853.3921.022.328Das Prinzip des Anhängens von Elementen ähnelt array_push. Der einzige Unterschied besteht darin, dass es bei Verwendung von array_push Funktionsaufrufe gibt, während dies bei der Methode des Anhängens von Elementen nicht der Fall ist erfordern Funktionsaufrufe. Auf diese Weise wird das Programm schlanker ausgeführt. PHP-Video-Tutorial
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
⒊ 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: „

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen