In der PHP-Entwicklung ist das tiefe Kopieren von Arrays ein wichtiger Vorgang, um Daten zu verarbeiten, ohne das ursprüngliche Array zu beeinträchtigen. Verschiedene Methoden unterscheiden sich in Effizienz, Komplexität und Anwendbarkeit. Dieser Artikel beschreibt häufig verwendete Deep-Copy-Methoden und bietet praktische Codebeispiele und Analysen.
Das Schlüsselwort clone erstellt eine flache Kopie des Arrays und kopiert nur die obersten Elemente. Verschachtelte Arrays oder Objekte verweisen weiterhin auf die Werte des ursprünglichen Arrays und eignen sich daher für Szenarien mit weniger Verschachtelung.
Durch Anwenden von clone auf jedes Element im Array kann eine tiefe Kopie des Elements erstellt werden. Diese Methode basiert jedoch auf Rekursion und ist für große verschachtelte Arrays weniger effizient.
Konvertieren Sie zuerst das Array in eine JSON-Zeichenfolge und geben Sie dann mit json_encode () und json_decode () das Array zurück, um eine tiefe Kopie zu erreichen. Diese Methode ist weniger effizient und verbraucht mehr Speicher, eignet sich aber für Arrays mit einfachen Strukturen.
Durchlaufen Sie das Array manuell und generieren Sie über eine rekursive Funktion ein neues Array, um eine tiefe Kopie zu erreichen. Diese Methode ist flexibel und effizient, erfordert jedoch möglicherweise mehr Code für komplexe Arrays.
Die Verwendung von Bibliotheken von Drittanbietern (z. B. DeepCopy) kann das tiefe Kopieren komplexer Arrays bewältigen und bietet eine effiziente und zuverlässige Lösung, die für allgemeine Entwicklungsanforderungen geeignet ist.
Angenommen, Sie haben ein mehrdimensionales Array mit verschachtelten Arrays:
$original = [
'name' => 'John Doe',
'address' => [
'street' => 'Main Street',
'city' => 'New York'
]
];
Die Leistung der Methode array_map(clone) kann mit dem folgenden Code getestet werden:
$start = microtime(true);
$copy = array_map('clone', $original);
$end = microtime(true);
$time = $end - $start;
echo "array_map(clone): $time seconds\n";
Andere Methoden können auf ähnliche Weise getestet und verglichen werden.
Verfahren | Effizienz | Komplexität | Anwendbarkeit |
---|---|---|---|
Klon | hoch | Niedrig | Flache Kopie |
array_map(Klon) | Medium | hoch | Viele verschachtelte Elemente |
JSON-Konvertierung | Niedrig | Niedrig | kleines einfaches Array |
rekursive Funktion | hoch | hoch | komplexes Array |
Bibliotheken von Drittanbietern | hoch | Medium | allgemeiner Zweck |
Es gibt verschiedene Methoden zum Deep Copying von PHP-Arrays. Für Arrays mit hohen Leistungsanforderungen und weniger Verschachtelung können Sie einen Klon oder eine Bibliothek eines Drittanbieters wählen. Komplexe Arrays können rekursive Funktionen verwenden, um flexible tiefe Kopien zu implementieren. Die JSON-Konvertierung eignet sich für einfache Arrays, ist weniger effizient, aber einfach zu implementieren.