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

Курсы

Программирование
iOS Developer. Professional Kotlin Backend Developer Flutter Mobile Developer Symfony Framework C++ Developer. Basic Unity Game Developer. Basic Java Developer. Professional
-35%
Highload Architect Unity Game Developer. Professional React.js Developer Специализация Java-разработчик
-25%
Алгоритмы и структуры данных
-16%
Scala-разработчик C# Developer. Professional
-23%
Разработчик голосовых ассистентов и чат-ботов Team Lead Архитектура и шаблоны проектирования NoSQL Web-разработчик на Python Golang Developer. Professional PostgreSQL Vue.js разработчик Супер-практикум по использованию и настройке GIT Разработчик IoT Подготовка к сертификации Oracle Java Programmer (OCAJP) Программист С HTML/CSS
Инфраструктура
Инфраструктурная платформа на основе Kubernetes Microservice Architecture Базы данных Highload Architect Reverse-Engineering. Professional
-8%
Network engineer. Basic Administrator Linux.Basic MongoDB Infrastructure as a code MS SQL Server Developer Cloud Solution Architecture Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по использованию и настройке GIT Разработчик IoT Экcпресс-курс «ELK» Супер-интенсив "Tarantool" Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» Экспресс-курс «Введение в непрерывную поставку на базе Docker»
Корпоративные курсы
Безопасность веб-приложений Экосистема Hadoop, Spark, Hive Пентест. Практика тестирования на проникновение Node.js Developer Java QA Engineer. Basic
-18%
Reverse-Engineering. Professional
-8%
DevOps практики и инструменты NoSQL Reverse-Engineering. Basic Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Game QA Engineer Супер - интенсив по Kubernetes Дизайн сетей ЦОД Экспресс-курс «IaC Ansible» Экспресс-курс по управлению миграциями (DBVC) Экспресс-курс "Версионирование и командная работа с помощью Git" Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+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 комментариев
Для комментирования необходимо авторизоваться