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)
如您所见,只有第一维受到影响,那么如何投射多维对象呢?
没有将多级对象转换为数组的官方方法,但好消息是有一个 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)
该方法有一些缺点(例如,它不能处理资源),但它们只是小麻烦。