php kopiowanie elementów tablicy według wartości, a nie przez odniesienie
Mam następujący kod:
$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
Sądzę, że ponieważ wszystkie elementy $ data są same w sobie, modyfikowanie $ data ['y'] modyfikuje również $ data ['x'] .. co NIE jest tym, czego chcę. Chcę, aby $ data ['x'] pozostało takie samo. Czy jest jakiś sposób na wyłuskanie elementów tutaj, aby móc skopiować elementy według wartości?
Dzięki.
Aktualizacja: $ this-> x-> getResults (); zwraca tablicę obiektów. Więc mogę zrobić coś takiego: $ data ['x'] [0] -> date_create ...
Aktualizacja: moja ostatnia próba klonowania tablicy wygląda mniej więcej tak:
$data['x'] = $this->x->getResults();
$data['y'] = $data['y'];
foreach($data['x'] as $key=>$row) {
$data['y'][$key]->some_attr = clone $row->some_attr;
}
Czy jestem tu daleko? Ciągle otrzymuję błąd „__clone wywoływany na nieobiektowym” błędzie. Od przeczytania odpowiedzi wydaje się, że moją najlepszą opcją jest iterowanie każdego elementu i klonowanie go (co właśnie próbowałem zrobić z tym kodem ..).
AKTUALIZACJA: Rozwiązałem to !: w pętli foreach musiałem zmienić linię na:
$data['y'][$key] = clone $row;
I to działa! Dziękujemy wszystkim za pomoc.