Преобразование массива в объект в PHP. Как скопировать массив в PHP | OTUS
⚡ Открываем подписку на курсы!
Проходите параллельно 3 онлайн-курса в месяц по цене одного.
Подробнее

Курсы

Программирование
Flutter Mobile Developer Подготовка к сертификации Oracle Java Programmer (OCAJP)
-8%
Алгоритмы и структуры данных
-12%
Web-разработчик на Python
-11%
Архитектура и шаблоны проектирования
-14%
JavaScript Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах»
-18%
iOS-разработчик. Базовый курс
-23%
Разработчик на Spring Framework
-23%
Python Developer. Basic
-16%
C# ASP.NET Core разработчик
-18%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Android Developer. Basic
-10%
C++ Developer. Professional Разработчик C# AWS для разработчиков Software Architect Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов Backend-разработка на Kotlin React.js Developer Разработчик Node.js Нереляционные базы данных Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Advanced Fullstack JavaScript developer
Инфраструктура
PostgreSQL
-10%
IoT-разработчик
-12%
Administrator Linux. Professional
-11%
Базы данных
-19%
Administrator Linux.Basic
-18%
Супер-интенсив «СУБД в высоконагруженных системах»
-18%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Сетевой инженер AWS для разработчиков Software Architect Reverse-Engineering. Professional CI/CD VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes
Специализации Курсы в разработке Подготовительные курсы
+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 комментариев
Для комментирования необходимо авторизоваться