Преобразование массива в объект в 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 мы можем лишь при помощи итераций
<?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-программирования вы сможете на наших курсах: