Объекты передаются по умолчанию по умолчанию и их не всегда легко клонировать, тем более что они могут иметь циклические ссылки.Вы бы лучше подходили с другим выбором структур данных.
Для тех, кто предоставляет решения для поверхностного копирования, более простой способ:
$b = (array)$a;
Для глубоких копий я не рекомендую это решение:
$ nuarr = json_decode (json_encode ($ array));
Это для глубокой копии.Он поддерживает только подмножество типов PHP и будет заменять объекты массивом или массивами на объекты, которые могут быть не тем, что вы хотите, а также потенциально искажать двоичные значения и т. Д.
Если вы выполняете рекурсивную функцию вручную длядля глубоких копий использование памяти будет впоследствии значительно меньше для скалярных значений и ключей, поэтому использование json или любого сериализатора может повлиять за пределы его точки выполнения.
Может быть лучше использовать unserialize (serialize ($ a)) дляглубокие копии, если производительность не является проблемой, которая имеет более широкую поддержку для таких вещей, как объекты, хотя я бы не удивился, если бы она разбивалась для циклических ссылок и некоторых других необычных вещей.
array_merge_recursive или array_walk_recursive могут также использоваться для массивов.
Вы можете легко создать свою собственную рекурсивную функцию, которая использует is_object и is_array для выбора подходящих средств копирования.