是否有一个函数可以将一个PHP数组复制到另一个数组?
我已经被烧毁了几次试图复制PHP数组。我想将对象内定义的数组复制到对象外部的全局数组。
是否有一个函数可以将一个PHP数组复制到另一个数组?
我已经被烧毁了几次试图复制PHP数组。我想将对象内定义的数组复制到对象外部的全局数组。
当前回答
private function cloneObject($mixed)
{
switch (true) {
case is_object($mixed):
return clone $mixed;
case is_array($mixed):
return array_map(array($this, __FUNCTION__), $mixed);
default:
return $mixed;
}
}
其他回答
当你这样做时
$array_x = $array_y;
PHP复制了数组,所以我不确定你是如何被烧毁的。为了你的案子,
global $foo;
$foo = $obj->bar;
应该没问题。
我认为,要想被复制,要么必须使用引用,要么需要克隆数组中的对象。
PHP将默认复制数组。PHP中的引用必须显式。
$a = array(1,2);
$b = $a; // $b will be a different array
$c = &$a; // $c will be a reference to $a
创建ArrayObject的副本
<?php
// Array of available fruits
$fruits = array("lemons" => 1, "oranges" => 4, "bananas" => 5, "apples" => 10);
$fruitsArrayObject = new ArrayObject($fruits);
$fruitsArrayObject['pears'] = 4;
// create a copy of the array
$copy = $fruitsArrayObject->getArrayCopy();
print_r($copy);
?>
从https://www.php.net/manual/en/arrayobject.getarraycopy.php
我发现最安全、最便宜的方法是:
<?php
$b = array_values($a);
这也有重新索引数组的好处。
这将不会像预期的那样工作在关联数组(哈希)上,但也不是以前的大多数答案。
<?php
function arrayCopy( array $array ) {
$result = array();
foreach( $array as $key => $val ) {
if( is_array( $val ) ) {
$result[$key] = arrayCopy( $val );
} elseif ( is_object( $val ) ) {
$result[$key] = clone $val;
} else {
$result[$key] = $val;
}
}
return $result;
}
?>