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


how to convert the stdobject array into normal array

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的新手。

使用json_decode() 和 json_encode()

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

其中$object是多维嵌套对象。

解释:

首先对对象进行 JSON 编码,然后对对象进行 JSON 解码。

第二个参数associative TRUE.

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

创建递归函数

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;
    }
}
您可以通过在

相关数组前面使用(array)来使用类型转换...所以对你来说:

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

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

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