Есть ли функция, чтобы сделать копию массива PHP в другой? - PullRequest
478 голосов
/ 07 октября 2009

Есть ли функция для копирования массива PHP в другой?

Меня несколько раз сжигали, пытаясь скопировать массивы PHP. Я хочу скопировать массив, определенный внутри объекта, в глобальный за его пределами.

Ответы [ 18 ]

2 голосов
/ 11 марта 2015

Так я копирую свои массивы в 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
)
1 голос
/ 05 января 2017

Самый безопасный и дешевый способ, который я нашел, это:

<?php 
$b = array_values($a);

Это также дает преимущество для переиндексации массива.

Это не будет работать должным образом для ассоциативного массива (хеша), но не для большинства предыдущих ответов.

1 голос
/ 29 июля 2016

Определите это:

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

Скопируйте $ _ARRAY в $ _ARRAY2:

$_ARRAY2 = array_map($copy, $_ARRAY);
0 голосов
/ 23 мая 2019

Создает копию объекта 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

0 голосов
/ 29 сентября 2018

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

Просто чтобы опубликовать еще одно решение;)

0 голосов
/ 14 июля 2017
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;
    }
}
0 голосов
/ 06 апреля 2017

В массиве php вам нужно просто присвоить их другой переменной, чтобы получить копию этого массива. Но сначала вам нужно убедиться в его типе, будь то массив или arrayObject или stdObject.

Для простого массива php:

$a = array(
'data' => 10
);

$b = $a;

var_dump($b);

output:

array:1 [
  "data" => 10
]
0 голосов
/ 29 мая 2015
<?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;
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...