как преобразовать массив stdobject в обычный массив

Array
(
[0] => stdClass Object
(
[card] => stdClass Object
(
[name] => Abc
[number] => 1234567123456798
[exp_month] => 1
[exp_year] => 2015
[cvc] => 123
)

[deliveryPeriod] => stdClass Object
(
[id] => 1
[store_id] => 1
[start_date] => 2014-11-01
[end_date] => 2014-12-31
[delivery_schedules] => Array
(
[0] => stdClass Object
(
[id] => 1
[delivery_period_id] => 1
[start_time] => 09:00:00
[end_time] => 18:00:00
[slot_capacity] => 25
[delivery_fee] => 2
[used_capacity] => 1
)

)

)

)

)

)

У меня есть этот массив объектов stdclass, и я хочу преобразовать его в обычный массив. Я использовал foreach, но я могу перебрать внутренний массив. Как я могу сделать это в php.Пожалуйста, помогите мне, я новичок в php.

1

Решение

использование
json_decode () а также json_encode ()

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

куда $object Ваш многомерный вложенный объект.

Объяснение:

Сначала JSON кодирует ваш объект, затем JSON декодирует его.

Со вторым аргументом associative в TRUE,

Таким образом, вы получите ассоциативный массив, не заботясь о вложенной глубине.

4

Другие решения

Создать рекурсивную функцию

function objectToArray($obj, &$new_array){
foreach($obj as $key => $value){
if(is_object($value){
$new_array[$key] = array();
objectToArray($value, $new_array[$key]);
} else {
$new_array[$key] = $value;
}

return $new_array;
}
}
2

Вы можете просто использовать Typecasting с помощью (array) перед рассматриваемым массивом … Так что для вас:

foreach($array as $item) {
$itemArray = (array)$item;
}
1

Вы можете настроить тип вашего массива, как показано ниже:

<?php
$obj = new stdClass();
$obj->test = 'Hello';
var_dump($obj);

$arr = (array)$obj;
var_dump($arr);

Возвращает:

object(stdClass)#1 (1) {
["test"]=>
string(5) "Hello"}
array(1) {
["test"]=>
string(5) "Hello"}
0
По вопросам рекламы [email protected]