如何在PHP中将数组数组转换为对象?

时间:2017-02-25 17:15:42

标签: php arrays casting

我有一个如下所示的数组数组,我想将其转换为对象数组。

array (size=3)
  'declaration' => 
    array (size=99)
      'GO_IMPZONK_ID' => string '130334' (length=6)
      'ID' => string '19802862' (length=8)
      'CUSTE' => string '10100' (length=5)
      'DCLEXP' => null
      'DCL_BROKER_CODE' => string '' (length=0)
      'RLCCODE' => string '' (length=0)
  'items' => 
    array (size=1)
      0 => 
        array (size=50)
          'GO_IMPDCL_ID' => string '19802862' (length=8)
          'TARIFYEAR' => string '85' (length=2)
  'extensions' => 
    array (size=6)
      0 => 
        array (size=5)
          'GO_IMPDCL_ID' => string '19802862' (length=8)
          'TOTVALUE' => string '0.00' (length=4)
          'EXPDATE' => string '2004-03-20' (length=10)
      1 => 
        array (size=5)
          'GO_IMPDCL_ID' => string '19802862' (length=8)
          'TOTVALUE' => string '0.00' (length=4)
          'EXPDATE' => string '2004-03-20' (length=10)

我确实试过像这样投射它,但它只在内部使用数组。

$obj=(object)$array;

如何从我的数组中嵌套多级对象?

1 个答案:

答案 0 :(得分:0)

我即兴创作了另一种方式:

$ar=[
'a'=>[
        'field1'=>52,
        'field2'=>52,
        'field3'=>52,
         ],
'b'=>[
        'field1'=>52,
        'field2'=>52,
        'field3'=>52,
        ]
];

function ToObj($data) {
  if (gettype($data) == 'array')
    return (object)array_map("ToObj", $data);
  else
    return $data;
}
$ObjectResult = array_map("ToObj", $ar);