Преобразование массива в объект в PHP. Как скопировать массив в PHP | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
iOS Developer. Professional
-8%
Базы данных
-12%
Flutter Mobile Developer
-10%
Python Developer. Basic
-10%
Java Developer. Professional
-7%
JavaScript Developer. Professional
-3%
MS SQL Server Developer
-8%
Scala-разработчик
-8%
Java Developer. Basic
-8%
Алгоритмы и структуры данных
-9%
Разработчик IoT
-13%
PostgreSQL
-8%
Подготовка к сертификации Oracle Java Programmer (OCAJP) Python Developer. Professional Golang Developer. Professional Разработчик программных роботов (RPA) на базе UiPath и PIX Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов Agile Project Manager Node.js Developer Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes iOS Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool"
Инфраструктура
Базы данных
-12%
Network engineer. Basic
-10%
Network engineer
-4%
Инфраструктурная платформа на основе Kubernetes
-6%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Экспресс-курс «Введение в непрерывную поставку на базе Docker»
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Дизайн сетей ЦОД
-13%
PostgreSQL
-8%
DevOps практики и инструменты Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP NoSQL Супер-практикум по использованию и настройке GIT Супер-интенсив «СУБД в высоконагруженных системах» Экспресс-курс «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Преобразование массива в объект в 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);
?>

Смотрим результат: zcPOXrtGT24_1-20219-5aecd1.jpg

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

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

Получаем:

Cju37uyKMNE_1-20219-097678.jpg

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

PHP_970x90-20219-10b307.jpg

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться