- Конвертирование массива в объект в PHP
- Комментарии ( 0 ):
- Преобразовать массив в объект (PHP)
- Преобразование в объект
- В результате stdClass
- Обращение к членам объекта
- Переменное имя свойства
- Числовые ключи
- Результат
- Категории
- Читайте также
- Комментарии
- Вход на сайт
- Социальные сети
- Преобразование массива в объект в PHP. Как скопировать массив в PHP
- 1. Преобразование массива
- Обращаемся к членам объекта в PHP
- Переменное имя свойства
- Числовые ключи
- 2. Создание ссылки и копирование массива
Конвертирование массива в объект в PHP
Как известно PHP — это слаботипизированный язык, поэтому в нем большая часть преобразования типов осуществляются автоматически. Но иногда необходимо преобразовать один тип данных в другой, как например массив в объект.
Зачем это может понадобиться? Например, как известно в PHP есть суперглобальный массив $_REQUEST, который содержит все переменные переданные скрипту в url адресе. Так вот, эти данные нам необходимо предварительно очистить и привести к какому-то общему виду. Вот здесь-то можно использовать преобразование массива в объект в PHP.
В самом простом случаем преобразовать массив в объект в PHP можно следующим образом:
// если нажата кнопка отправки формы
if( $req -> btnSearch )
$cmd = »;
switch($req -> type)
case ‘phone’:
$cmd = Phone:class;
Но это в том случае, если массив одномерный. А что, в массиве есть еще другие массивы? В этом случае нам поможет рекурсия:
function arrayToObject($array)
$object = new stdClass();
return array2object($array,$object);
>
// многомерный массив
$array = [
‘hello’ => ‘1’,
‘open2’ => ‘2’,
‘object’ => [
‘obj’ => ‘inner’,
‘inner3’ => [
‘object3’ => ‘Inner’
]
]
];
// вызываем
$req = arrayToObject($array);
print_r($req);
stdClass Object
(
[hello] => 1
[open2] => 2
[object] => stdClass Object
(
[obj] => inner
[inner3] => stdClass Object
(
[object3] => Inner
)
Теперь можно обращаться к свойствам объекта следующим образом:
print $req -> object -> inner3 -> object3;
Вот таким образом, можно конвертировать (одномерный/многомерный) массив в объект в PHP.
Создано 13.08.2019 09:59:15
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.
Преобразовать массив в объект (PHP)
Преобразовать массив в объект можно при помощи приведения его к типу object . После преобразования массива в тип object , будет создан новый экземпляр встроенного класса stdClass.
Преобразование в объект
Например есть ассоциативный массив, который нужно преобразовать в объект.
‘Вселенная (Universe)’, ‘galaxy’ => ‘Млечный путь (Milky way)’, ‘planetary-system’ => ‘Солнечная система (Solar system)’, ‘planet’ => ‘Земля (Earth)’, ‘continent’ => ‘Европа (Europe)’, ‘country’ => ‘Россия (Russia)’, ‘city’ => ‘Москва (Moscow)’ ); // приводим массив к типу object $object = (object)$array; // выводим массив print_r($object);?php>
В результате stdClass
stdClass Object ( [0] => Вселенная (Universe) [galaxy] => Млечный путь (Milky way) [planetary-system] => Солнечная система (Solar system) [planet] => Земля (Earth) [continent] => Европа (Europe) [country] => Россия (Russia) [city] => Москва (Moscow) )
Обращение к членам объекта
После преобразования, некоторые элементы объекта (бывшего массива), можно получить как член класса, если они соответствуют правилу именования переменной (Правильное имя переменной должно начинаться с буквы или символа подчеркивания и состоять из букв, цифр и символов подчеркивания в любом количестве).
Переменное имя свойства
Если ключ элемента содержал другие символы, например дефис (-), то получить значение можно при помощи переменного имени свойства.
; // Солнечная система (Solar system) // или так $key = «planetary-system»; echo $object->$key; // Солнечная система (Solar system)?php>
Числовые ключи
Если ключ элемента был числовым, то получить значение из объекта можно только при помощи итераций foreach
Результат
0: Вселенная (Universe) galaxy: Млечный путь (Milky way) planetary-system: Солнечная система (Solar system) planet: Земля (Earth) continent: Европа (Europe) country: Россия (Russia) city: Москва (Moscow)
Категории
Читайте также
- Сортировать числовой массив (JavaScript)
- Умножить массив на число (PHP)
- Массив в строку через разделитель (PHP)
- Массив в строку (JavaScript)
- foreach vs array_walk (PHP)
- Строку в массив (JavaScript)
- Цикл в обратном порядке (PHP)
- Массив уникальных значений (JavaScript)
- Количество элементов ассоциативного массива (JavaScript)
- Ассоциативный массив в JavaScript
- Как записать массив в файл (PHP)
- Заполнить массив случайными числами (PHP)
Комментарии
А вот тут описан обратный вариант Преобразование объекта PHP в ассоциативный массив
http://q-answer.ru/questions/preobrazovanie-ob-ekta-php-v-associativnyy-massiv-36689.html
Вход на сайт
Введите данные указанные при регистрации:
Социальные сети
Вы можете быстро войти через социальные сети:
Преобразование массива в объект в 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 . '
'; >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 "
"; print_r($new_array); ?>
Смотрим результат:
Что касается создания ссылки на массив в PHP, то нам надо всего лишь добавить амперсант:
php $array = array("one", "two", "three"); print_r($array); $new_array = &$array; unset($array[0]); echo "
"; print_r($new_array); ?>
На этом всё, приобрести более глубокие навыки PHP-программирования вы сможете на наших курсах: