Преобразовать массив в объект (PHP)

Преобразовать массив в объект можно при помощи приведения его к типу object. После преобразования массива в тип object, будет создан новый экземпляр встроенного класса stdClass.

Преобразование в объект

Например есть ассоциативный массив, который нужно преобразовать в объект.

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

В результате stdClass

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

Обращение к членам объекта

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

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

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

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

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

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

Если ключ элемента был числовым, то получить значение из объекта можно только при помощи итераций 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)

Категории

ПрограммированиеPHPМассивыМассивы в PHP

Комментарии