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

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


当前回答

<?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;
}
?>

其他回答

定义:

$copy = create_function('$a', 'return $a;');

复制$_ARRAY到$_ARRAY2:

$_ARRAY2 = array_map($copy, $_ARRAY);

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

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

我喜欢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"}
foreach($a as $key => $val) $b[$key] = $val ;

同时保留键和值。数组a是数组b的精确副本

我很久以前就知道这一点,但这对我来说很有效。

$copied_array = array_slice($original_array,0,count($original_array));