我有以下数组(深度未知):
array(2) {
["index"]=>
object(stdClass)#17 (11) {
["desc"]=>
string(11) "home"
["headline"]=>
string(8) "products"
["teaser"]=>
array(2) {
[0]=>
object(stdClass)#18 (1) {
["sys"]=>
object(stdClass)#19 (3) {
["id"]=>
string(22) "EQhfcEesaqn4N7L"
}
}
[1]=>
object(stdClass)#20 (1) {
["sys"]=>
object(stdClass)#21 (3) {
["id"]=>
string(21) "egJ3xDTeyq8aKtK"
}
}
}
["label1"]=>
object(stdClass)#28 (1) {
["sys"]=>
object(stdClass)#29 (3) {
["id"]=>
string(22) "cwfyDB3WPwU4son"
}
}
["metaDescription"]=>
string(127) "Vestibulum Pharetra Bibendum Inceptos Quam"
["metaKeywords"]=>
string(10) "Vestibulum Pharetra Bibendum Inceptos Quam"
["metaTitle"]=>
string(51) "Lorem Ipsum"
}
[...]
}
所有“sys”对象都需要被另一个数组替换。
因此,如果我知道数组的最大深度,我可以做类似(伪代码)的事情:
foreach($array as $entry) {
if(property_exists($entry, 'sys')) {
// do stuff
} else {
foreach($entry as $sub) {
if(property_exists($sub, 'sys')) {
// do stuff
}
}
}
}
但是因为每个对象都可以有任意数量的后代,我想我需要一个递归函数。
如何递归解析此数组并将sys-objects替换为另一个对象?