如何将stdobject数组转换为普通数组

时间:2014-12-08 10:06:52

标签: php json stdclass

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.owase中做到这一点帮助我,我是php的新手。< / p>

4 个答案:

答案 0 :(得分:4)

使用 json_decode()json_encode()

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

$object是您的多维嵌套对象。

<强>解释

首先JSON编码您的对象,然后JSON解码它。

使用第二个参数associativeTRUE

这样,您将获得一个关联数组,而无需关心嵌套深度。

答案 1 :(得分:2)

创建递归函数

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 :(得分:1)

你可以在问题阵列前面使用(array)来使用类型转换......那么对你来说:

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

答案 3 :(得分:0)

您可以像下面的示例一样对数组进行类型转换:

<?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"
}