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

Пользователь

от lilla.herman , в категории: PHP , 2 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jaylen.trantow , 2 года назад

@lilla.herman 

Чтобы преобразовать объект в массив в PHP, можно использовать функцию get_object_vars(). Она принимает объект в качестве аргумента и возвращает массив, содержащий все публичные свойства объекта.


Например:

1
2
3
4
5
6
7
$object = new stdClass;
$object->foo = 'bar';
$object->baz = 'qux';

$array = get_object_vars($object);

print_r($array);


Этот код выведет:

1
2
3
4
5
Array
(
    [foo] => bar
    [baz] => qux
)


Обратите внимание, что функция get_object_vars() возвращает только публичные свойства объекта. Чтобы получить также и защищенные и приватные свойства, можно использовать функцию get_class_vars(), которая принимает имя класса в качестве аргумента.


Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class MyClass {
  public $foo = 'bar';
  protected $baz = 'qux';
  private $quux = 'corge';
}

$object = new MyClass;

$array = get_class_vars('MyClass');

print_r($array);


Этот код выведет:

1
2
3
4
5
6
Array
(
    [foo] => bar
    [baz] => qux
    [quux] => corge
)


Пользователь

от roxanne.hauck , год назад

@lilla.herman 

В PHP есть несколько способов преобразовать объект в массив:

  1. С помощью функции get_object_vars():
1
2
3
4
5
6
7
$object = new stdClass();
$object->name = 'John';
$object->age = 25;

$array = get_object_vars($object);

print_r($array);


Вывод:

1
2
3
4
5
Array
(
    [name] => John
    [age] => 25
)


  1. С использованием метода json_decode() в связке с json_encode():
1
2
3
4
5
6
7
$object = new stdClass();
$object->name = 'John';
$object->age = 25;

$array = json_decode(json_encode($object), true);

print_r($array);


Вывод:

1
2
3
4
5
Array
(
    [name] => John
    [age] => 25
)


  1. С помощью рекурсивной функции, которая обходит каждый элемент объекта и преобразует его в массив:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
function objectToArray($object) {
    if (is_object($object)) {
        $object = get_object_vars($object);
    }
    
    if (is_array($object)) {
        return array_map(__FUNCTION__, $object);
    }
    else {
        return $object;
    }
}

$object = new stdClass();
$object->name = 'John';
$object->age = 25;

$array = objectToArray($object);

print_r($array);


Вывод:

1
2
3
4
5
Array
(
    [name] => John
    [age] => 25
)


Выберите любой из этих способов в зависимости от ваших потребностей и предпочтений.