是否有一个函数可以将一个PHP数组复制到另一个数组?

我已经被烧毁了几次试图复制PHP数组。我想将对象内定义的数组复制到对象外部的全局数组。


当前回答

PHP将默认复制数组。PHP中的引用必须显式。

$a = array(1,2);
$b = $a; // $b will be a different array
$c = &$a; // $c will be a reference to $a

其他回答

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_replace(或array_replace_recursive)。

$克隆= array_replace([], $YOUR_ARRAY);

它像Object一样工作。从JavaScript赋值。

$original = [ 'foo' => 'bar', 'fiz' => 'baz' ];

$cloned = array_replace([], $original);
$clonedWithReassignment = array_replace([], $original, ['foo' => 'changed']);
$clonedWithNewValues = array_replace([], $original, ['add' => 'new']);

$original['new'] = 'val';

会导致

// original: 
{"foo":"bar","fiz":"baz","new":"val"}
// cloned:   
{"foo":"bar","fiz":"baz"}
// cloned with reassignment:
{"foo":"changed","fiz":"baz"}
// cloned with new values:
{"foo":"bar","fiz":"baz","add":"new"}

当你这样做时

$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