PHP Kopieren von Array-Elementen nach Wert, nicht nach Referenz
Ich habe folgenden Code:
$data['x'] = $this->x->getResults();
$data['y'] = $data['x'];
//some code here to modify $data['y']
//this causes (undesirably) $data['x] to be modified as well
Ich denke, da alle Elemente von $ data selbst Referenzen sind, werden durch Ändern von $ data ['y'] auch $ data ['x'] geändert. Dies ist NICHT das, was ich möchte. Ich möchte, dass $ data ['x'] gleich bleibt. Gibt es eine Möglichkeit, die Elemente hier dereferenzieren, damit ich die Elemente nach Wert kopieren kann?
Vielen Dank.
Update: $ this-> x-> getResults (); gibt ein Objektarray zurück. Also kann ich dann so etwas machen wie: $ data ['x'] [0] -> date_create ...
Aktualisieren: Mein letzter Versuch, das Array zu klonen, sieht ungefähr so aus:
$data['x'] = $this->x->getResults();
$data['y'] = $data['y'];
foreach($data['x'] as $key=>$row) {
$data['y'][$key]->some_attr = clone $row->some_attr;
}
Bin ich hier weg? Ich erhalte immer wieder den Fehler "__clone-Methode bei Nicht-Objekt aufgerufen". Nach dem Lesen der Antworten scheint es meine beste Option zu sein, jedes Element zu durchlaufen und es zu klonen (was ich mit diesem Code versucht habe).
AKTUALISIEREN: Habe es gerade gelöst !: In der foreach-Schleife musste ich nur die Zeile ändern zu:
$data['y'][$key] = clone $row;
Und es funktioniert! Vielen Dank an alle für die Hilfe.