Wenn Sie ein Array haben, das Objekte enthält, Sie eine Kopie dieses Arrays erstellen müssen, ohne den internen Zeiger zu berühren, und Sie alle Objekte klonen müssen (damit Sie die Originale nicht ändern, wenn Sie Änderungen am kopierten Array vornehmen), verwenden Sie dies.
Der Trick, um den internen Zeiger des Arrays nicht zu berühren, besteht darin, sicherzustellen, dass Sie mit einer Kopie des Arrays arbeiten und nicht mit dem ursprünglichen Array (oder einem Verweis darauf), so dass die Verwendung eines Funktionsparameters die Aufgabe erfüllt (dies ist also eine Funktion, die ein Array aufnimmt).
Beachten Sie, dass Sie immer noch Folgendes implementieren müssen __klonen() für Ihre Objekte, wenn Sie möchten, dass deren Eigenschaften ebenfalls geklont werden.
Diese Funktion funktioniert für jede Art von Array (einschließlich gemischter Typen).
function array_clone($array) {
return array_map(function($element) {
return ((is_array($element))
? array_clone($element)
: ((is_object($element))
? clone $element
: $element
)
);
}, $array);
}