Преобразование массива в объект в PHP. Как скопировать массив в PHP

В этой статье поговорим, как преобразовать массив в объект и как создать ссылку на массив и скопировать его. Начнём с преобразования — здесь нам поможет приведение массива к типу object. Как только мы выполним преобразование массива в тип object, произойдёт создание нового экземпляра встроенного в PHP класса stdClass.

1. Преобразование массива

Итак, представьте, что у нас есть ассоциативный массив, и мы желаем преобразовать его в объект.

<?php
// наш исходный массив
$array = array(
    0 => 'Вселенная',
    'galaxy' => 'Млечный путь',
    'planetary-system' => 'Солнечная система',
    'planet' => 'Земля',
    'continent' => 'Европа',
    'country' => 'Россия',
    'city' => 'Москва'
);
// приведём массив к типу object
$object = (object)$array;
// выведем массив
print_r($object);

Теперь посмотрим на stdClass

stdClass Object
(
    [0] => Вселенная 
    [galaxy] => Млечный путь
    [planetary-system] => Солнечная система 
    [planet] => Земля 
    [continent] => Европа 
    [country] => Россия 
    [city] => Москва 
)

Обращаемся к членам объекта в PHP

После выполнения преобразования ряд элементов нашего объекта (бывшего массива) мы можем получить как член класса, если они отвечают правилам именования переменной (тут следует понимать, что правильное имя должно начинаться с буквы либо символа подчеркивания, а также состоять из цифр, букв и символов подчеркивания в любом количестве).

<?php
// бывший элемент $array['galaxy']
echo $object->galaxy;
// Млечный путь 

Переменное имя свойства

Если ключ нашего элемента содержал другие символы (допустим, дефис), получить значение мы сможем лишь при помощи переменного имени свойства.

<?php
echo $object->{"planetary-system"};
// Солнечная система 
// либо так
$key = "planetary-system";
echo $object->$key;
// Солнечная система 

Числовые ключи

Если же ключ был числовым, получить значение из объекта в PHP мы можем лишь при помощи итераций foreach:

<?php
foreach ($object as $key => $value) {
    echo $key . ': ' . $value . '<br/>';
}

Вот наш результат:

0: Вселенная (Universe)
galaxy: Млечный путь (Milky way)
planetary-system: Солнечная система (Solar system)
planet: Земля (Earth)
continent: Европа (Europe)
country: Россия (Russia)
city: Москва (Moscow)

2. Создание ссылки и копирование массива

Теперь перейдём ко второй части нашей статьи. На самом деле, скопировать массив в PHP несложно:

    <?php
$array = array("one", "two", "three");
print_r($array);
$new_array = $array;
unset($array[0]);
echo "<hr>";
print_r($new_array);
?>

Смотрим результат:

Что касается создания ссылки на массив в PHP, то нам надо всего лишь добавить амперсант:

    <?php
$array = array("one", "two", "three");
print_r($array);
$new_array = &$array;
unset($array[0]);
echo "<hr>";
print_r($new_array);
?>

Получаем:

На этом всё, приобрести более глубокие навыки PHP-программирования вы сможете на наших курсах: