У меня есть 2 массива.
$result = array();
$row = array();
Все элементы строки являются ссылками и постоянно меняются. Для каждой итерации $row
я хочу скопировать значения строки в запись $result
, а не в ссылки.
Я нашел несколько решений, но все они кажутся довольно ужасными.
$result[] = unserialize(serialize($row));
$result[] = array_flip(array_flip($row));
Оба вышеперечисленных варианта работают, но кажутся ненужным и уродливым кодом, просто копирующим содержимое массива ссылок по значению, а не копирующим сами ссылки.
Есть ли более чистый способ сделать это? Если нет, то какой будет самый эффективный способ?
Спасибо.
РЕДАКТИРОВАТЬ: Как предлагается ниже что-то вроде:
function dereference($ref) {
$dref = array();
foreach ($ref as $key => $value) {
$dref[$key] = $value;
}
return $dref;
}
$result[] = dereference($row);
Также работает, но выглядит так же ужасно.