Mam 2 tablice.Elementy tablicy dereferencyjnej PHP
$result = array();
$row = array();
Elementy wiersza to odniesienia i stale się zmieniają. Dla każdej iteracji $row
chcę skopiować wartości wiersza do wpisu $result
, a nie odniesienia.
Znalazłem kilka rozwiązań, ale wszystkie wydają się okropne.
$result[] = unserialize(serialize($row));
$result[] = array_flip(array_flip($row));
Oba wyżej pracy, ale wydaje się dużo niepotrzebnej i brzydkiego kodu po prostu skopiować zawartość tablicy odniesienia pod względem wartości, zamiast kopiowania samych referencji.
Czy istnieje lepszy sposób osiągnięcia tego? Jeśli nie, jaki byłby najbardziej efektywny sposób?
Dzięki.
EDIT: Jak sugeruje coś takiego jak poniżej:
function dereference($ref) {
$dref = array();
foreach ($ref as $key => $value) {
$dref[$key] = $value;
}
return $dref;
}
$result[] = dereference($row);
działa także, ale wydaje się równie brzydkie.
To może być duplikat, http://stackoverflow.com/questions/1190026/php-copying-array-elements -za-wartość-nie-przez-odniesienie –
Ma do czynienia z przedmiotami. Mam do czynienia wyłącznie z tablicami. – anomareh
Gdyby ludzie przyjęli moją odpowiedź, wierzyli, że mam rację. Jeśli tak nie jest, najprawdopodobniej oznacza to, że na początku nie wyjaśniłeś pytania. Uważam, że jest to dość niegrzeczne, aby powiedzieć ludziom, że próbuję ci pomóc, więc nie będę próbować dalej. – zneak