У меня есть 2 массива.Элементы массива разыменования PHP
$result = array();
$row = array();
Элементы Row являются ссылками и постоянно меняются. Для каждой итерации $row
Я хочу скопировать значения строки в запись $result
, а не ссылки.
Я нашел несколько решений, но все они кажутся довольно ужасными.
$result[] = unserialize(serialize($row));
$result[] = array_flip(array_flip($row));
Оба выше работы, но, кажется, как много ненужного и некрасивого код просто скопировать содержимое массива ссылок по значению, вместо копирования самих ссылок.
Есть ли более чистый способ сделать это? Если бы не самый эффективный способ?
Спасибо.
EDIT: Как было предложено ниже что-то такое, как:
function dereference($ref) {
$dref = array();
foreach ($ref as $key => $value) {
$dref[$key] = $value;
}
return $dref;
}
$result[] = dereference($row);
Также работает, но кажется столь же некрасиво.
Это может быть дубликатом, http://stackoverflow.com/questions/1190026/php-copying-array-elements -by-value-not-by-reference –
Он имеет дело с объектами. Я имею дело с массивами. – anomareh
Если люди поддержали мой ответ, они поверили, что я прав. Если это не так, то это, скорее всего, означает, что вы сначала не задали свой вопрос. Я нахожу довольно грубым с вашей стороны, чтобы рассказать людям о снижении моей попытки помочь вам, поэтому я больше не буду пытаться. – zneak