Преобразование объекта PHP в ассоциативный массив

Мы представим метод преобразования объекта PHP в ассоциативный массив, задавая типы объектов StdClass с помощью ключевого слова array . Для отображения ассоциативного массива воспользуемся функцией var_dump() .
Второй подход демонстрирует другой метод преобразования объекта PHP в ассоциативный массив, создающий StdClass в конструкторе определяемого пользователем класса. Преобразуем объект в ассоциативный массив, как в первом методе, с помощью ключевого слова array . Этот метод следует объектно-ориентированному подходу.
Мы также представим еще один метод преобразования объекта в ассоциативный массив в PHP с использованием функций json_encode() и json_decode() . Мы будем использовать StdClass для создания объекта и динамических свойств.
Используйте ключевое слово array для преобразования типа объекта StdClass в ассоциативный массив в PHP
Мы можем создать пустой класс StdClass для создания объекта в PHP и использовать объект для создания свойств. Объект класса может напрямую обращаться к свойствам. Он также может создавать динамические свойства для класса. Мы можем использовать объект массив для преобразования типа объекта в массив. Функция var_dump() выводит информацию о типе и значениях массива.
Например, создайте объект $object класса StdClass с помощью оператора new . Создайте два свойства, используя $object с именами car1 и car2 . Присвойте свойствам значения porsche и bugatti . Используйте ключевое слово array для приведения типа переменной $object . Оберните ключевое слово array круглыми скобками перед переменной $object и выгрузите значение с помощью функции var_dump() . В приведенном ниже примере объекты преобразуются в ассоциативный массив, как показано в разделе вывода. Он показывает пары ключ и значение для каждого элемента массива.
How do I convert an object to an array?
How can I convert this object to an array? I’d like to output the following:
Is this possible?
![]()
11 Answers 11
Single-dimensional arrays
For converting single-dimension arrays, you can cast using (array) or there’s get_object_vars , which Benoit mentioned in his answer.
They work slightly different from each other. For example, get_object_vars will return an array with only publicly accessible properties unless it is called from within the scope of the object you’re passing (ie in a member function of the object). (array) , on the other hand, will cast to an array with all public, private and protected members intact on the array, though all public now, of course.
Multi-dimensional arrays
A somewhat dirty method is to use PHP >= 5.2’s native JSON functions to encode to JSON and then decode back to an array. This will not include private and protected members, however, and is not suitable for objects that contain data that cannot be JSON encoded (such as binary data).
Alternatively, the following function will convert from an object to an array including private and protected members, taken from here and modified to use casting:
Преобразовать объект в ассоциативный массив в PHP
Объект является экземпляром класса. Это просто образец класса с выделенной памятью. Массив — это структура данных, в которой хранится один или несколько аналогичных типов значений в одном имени, но ассоциативный массив отличается от простого массива PHP. Массив, который содержит строковый индекс, называется ассоциативным массивом. Он хранит значения элементов в сочетании со значениями ключа, а не в линейном порядке индекса.
Метод 1: Использование методов json_decode и json_encode: функция json_decode принимает строку в кодировке JSON и преобразует ее в переменную PHP, с другой стороны, json_encode возвращает строку в кодировке JSON для заданного значения.
Синтаксис:
Пример:
function __construct( $par1 , $par2 )
$this ->var1 = $par1 ;
$this ->var2 = $par2 ;
$myObj = new sample(1000, «second» );
echo «Before conversion: \n» ;
// Преобразование объекта в ассоциативный массив
$myArray = json_decode(json_encode( $myObj ), true);
echo «After conversion: \n» ;
Метод 2: Тип Приведение объекта к массиву: Типизация — это способ использования одной переменной типа данных в другом типе данных, и это просто явное преобразование типа данных. Он может преобразовать объект PHP в массив с помощью правил преобразования типов, поддерживаемых в PHP.
Как мне преобразовать объект в массив?
Как я могу преобразовать этот объект в массив? Я хотел бы вывести следующее:
Возможно ли это?
11 ответов
Вы должны посмотреть get_object_vars, так как ваши свойства объявлены частными, вы должны вызвать это внутри класса и вернуть его результаты.
Будьте осторожны: для примитивных типов данных, таких как строки, он будет работать отлично, но я не знаю, как он ведет себя с вложенными объектами.
в вашем случае вы должны сделать что-то вроде:
Одномерные массивы
Для преобразования одномерных массивов вы можете использовать с помощью (array) или get_object_vars , которые Бенуа упомянул в его ответ.
Они немного отличаются друг от друга. Например, get_object_vars возвращает массив с только общедоступными свойствами, если он не вызван из области объекта, который вы передаете (т.е. В функции-члена объекта). (array) , с другой стороны, будет передан массиву со всеми публичными, частными и защищенными членами, неповрежденными в массиве, хотя, конечно, все публично.
Многомерные массивы
Несколько грязный метод заключается в том, чтобы использовать PHP >= 5.2 собственные функции JSON для кодирования JSON, а затем декодировать обратно в массив. Однако это не будет включать закрытых и защищенных членов.
В качестве альтернативы, следующая функция будет конвертировать из объекта в массив, включая частные и защищенные члены, взятые из здесь и измененные для использования кастинга: