У меня есть многомерный массив, который имеет такую структуру:
[
{
"id": 1,
"parentID": 0,
"view": "App",
"name": "view",
"children": [
{
"id": 2,
"parentID": 1,
"view": "Analytics",
"name": "view",
"children": [
{
"id": 3,
"parentID": 2,
"view": "Summary",
"name": "view",
"children": [
{
"id": 11,
"parentID": 3,
"view": "Apps",
"name": "view"
},
{
"id": 12,
"parentID": 3,
"view": "Devices",
"name": "view"
}
]
},
{
"id": 4,
"parentID": 2,
"view": "Overview",
"name": "view"
},
{
"id": 5,
"parentID": 2,
"view": "Insights",
"name": "view"
},
{
"id": 7,
"parentID": 2,
"view": "DeviceData",
"name": "view"
},
{
"id": 8,
"parentID": 2,
"view": "Geolocation",
"name": "view"
},
{
"id": 6,
"parentID": 2,
"view": "NetworkInsights",
"name": "view"
}
]
},
{
"id": 9,
"parentID": 1,
"view": "VirtualAppInstaller",
"name": "view",
"children": [
{
"id": 10,
"parentID": 9,
"view": "AppManager",
"name": "view"
}
]
}
]
}
]
, однако мне нужно создать массив строк, который содержит каждый элемент ключа view .
Примерно так:
[
"App.Analytics.Summary.Apps",
"App.Analytics.Summary.Devices",
"App.Analytics.Overview",
"App.Analytics.Insights",
... ,
... ,
"App.VirtualAppInstaller.AppManager"
]
Я думал о создании рекурсивной функции для извлечения каждого объекта, содержащего тег view
, однако я не могу понятьчто может быть лучшим подходом.
ОБНОВЛЕНИЕ
Мне удалось реализовать рекурсивную функцию
function recursion($array) {
foreach ($array as $key => $value) {
if($key==='view'){
var_dump($value);
}
if(is_array($value)){
$this->recursion($value);
}
}
}
РЕЗУЛЬТАТ:
string(3)"App"string(9)"Analytics"string(7)"Summary"string(4)"Apps"string(7)"Devices"string(8)"Overview"string(8)"Insights"string(10)"DeviceData"string(11)"Geolocation"string(15)"NetworkInsights"string(19)"VirtualAppInstaller"string(10)"AppManager"{}
однако теперь я застрял в том, чтобы узнать, когда функция достигла конца дочернего элемента, и с этим создаю первую строку