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

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


当前回答

简单,使深度复制打破所有链接

$new=unserialize(serialize($old));

其他回答

简单,使深度复制打破所有链接

$new=unserialize(serialize($old));
<?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;
}
?>

这是我在Php中复制数组的方式:

function equal_array($arr){
  $ArrayObject = new ArrayObject($arr);
  return $ArrayObject->getArrayCopy();  
}

$test = array("aa","bb",3);
$test2 = equal_array($test);
print_r($test2);

这个输出:

Array
(
[0] => aa
[1] => bb
[2] => 3
)

如果您有一个包含对象的数组,您需要在不触及其内部指针的情况下复制该数组,并且需要克隆所有对象(这样当您对复制的数组进行更改时不会修改原始对象),请使用此方法。

不接触数组内部指针的技巧是确保您使用的是数组的副本,而不是原始数组(或原始数组的引用),因此使用函数形参将完成工作(因此,这是一个接受数组的函数)。

注意,如果你希望对象的属性也被克隆,你仍然需要在对象上实现__clone()。

此函数适用于任何类型的数组(包括混合类型)。

function array_clone($array) {
    return array_map(function($element) {
        return ((is_array($element))
            ? array_clone($element)
            : ((is_object($element))
                ? clone $element
                : $element
            )
        );
    }, $array);
}

$arr_one_copy = array_combine(array_keys($arr_one), $arr_one);

只是再发布一个解决方案;)