PHP - 如何投射多维对象?

Boa*_*ing -1 php arrays casting object multidimensional-array

我想知道PHP 中是否有多维对象转换为数组的内置方法?

问题是在对象上应用常规铸造时,只有第一个维度受到影响,所有其他维度都提醒相同。

注意:我铸造感兴趣!

例子:

$a = new stdClass();
$a->b = 'qwe';
$a->c = new stdClass();
$a->c->d = 'asd';

var_dump((array)$a); // echoes:

array(2) {
  ["b"]=>
  string(3) "qwe"
  ["c"]=>
  object(stdClass)#2 (1) {
    ["d"]=>
    string(3) "asd"
  }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,只有第一维受到影响,那么如何投射多维对象呢?

axi*_*iac 5

没有将多级对象转换为数组的官方方法,但好消息是有一个 hack。

使用json_encode()让您的对象的JSON表示,则结果传递给json_decode()和使用TRUE作为第二个参数来获得数组来代替对象。

$a = new stdClass();
$a->b = 'qwe';
$a->c = new stdClass();
$a->c->d = 'asd';

print_r(json_decode(json_encode($a), TRUE));
Run Code Online (Sandbox Code Playgroud)

输出是:

Array
(
    [b] => qwe
    [c] => Array
        (
            [d] => asd
        )

)
Run Code Online (Sandbox Code Playgroud)

该方法有一些缺点(例如,它不能处理资源),但它们只是小麻烦。