Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как преобразовать объект в массив

Короткий ответ

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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.