Как преобразовать объект в массив
Короткий ответ
get_object_vars() возвращает открытые свойства объекта:
<?php
class Point
{
public function __construct(public int $x, public int $y) {}
}
echo json_encode(get_object_vars(new Point(3, 4)));Результат:
{"x":3,"y":4}Вложенные объекты
get_object_vars() преобразует только верхний уровень. Всё дерево превращают в массивы через JSON:
<?php
$data = json_decode('{"user":{"name":"Anna","tags":["php"]}}');
$array = json_decode(json_encode($data), true);
var_dump(is_array($array['user']));
echo $array['user']['tags'][0];Результат:
bool(true)
phpМассив в объект
Обратное преобразование — приведение типа:
<?php
$user = (object) ['name' => 'Anna', 'age' => 30];
echo $user->name, ' ', get_class($user);Результат:
Anna stdClassФункции из этого ответа
- get_object_vars — Возвращает доступные свойства объекта в виде массива.
- json_encode — Преобразует значение в строку JSON.
- json_decode — Разбирает строку JSON.