ano*_*reh 6 php arrays reference dereference
我有2个阵列.
$result = array();
$row = array();
Run Code Online (Sandbox Code Playgroud)
Row的元素都是引用,并且不断变化.对于每次迭代,$row我想将行的值复制到条目$result而不是引用.
我找到了一些解决方案,但它们看起来都很糟糕.
$result[] = unserialize(serialize($row));
$result[] = array_flip(array_flip($row));
Run Code Online (Sandbox Code Playgroud)
上面的两个工作,但似乎是很多不必要和丑陋的代码只是通过值复制引用数组的内容,而不是复制引用本身.
有没有更清洁的方法来实现这一目标?如果不是最有效的方式是什么?
谢谢.
编辑:如下所示,例如:
function dereference($ref) {
$dref = array();
foreach ($ref as $key => $value) {
$dref[$key] = $value;
}
return $dref;
}
$result[] = dereference($row);
Run Code Online (Sandbox Code Playgroud)
也有效,但看起来同样丑陋.
不确定我完全理解这个问题,但是你可以使用递归吗?
function array_copy($source) {
$arr = array();
foreach ($source as $element) {
if (is_array($element)) {
$arr[] = array_copy($element);
} else {
$arr[] = $element;
}
}
return $arr;
}
$result = array();
$row = array(
array('a', 'b', 'c'),
array('d', 'e', 'f')
);
$result[] = array_copy($row);
$row[0][1] = 'x';
var_dump($result);
var_dump($row);
Run Code Online (Sandbox Code Playgroud)