<?php
$arr = [array (
'category' =>
array (
'categoryId' => 34,
'categoryName' => 'Advertising',
),
'categoryTreeNodeLevel' => 2,
'childCategoryTreeNodes' =>
array (
0 =>
array (
'category' =>
array (
'categoryId' => 35,
'categoryName' => 'Other Advertising',
),
'categoryTreeNodeLevel' => 3,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
1 =>
array (
'category' =>
array (
'categoryId' => 36,
'categoryName' => 'Drinks',
),
'categoryTreeNodeLevel' => 3,
'childCategoryTreeNodes' =>
array (
0 =>
array (
'category' =>
array (
'categoryId' => 13601,
'categoryName' => 'Coca Cola',
),
'categoryTreeNodeLevel' => 4,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
1 =>
array (
'category' =>
array (
'categoryId' => 13613,
'categoryName' => 'Pepsi',
),
'categoryTreeNodeLevel' => 4,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
2 =>
array (
'category' =>
array (
'categoryId' => 20189,
'categoryName' => 'Other Drinks Advertising',
),
'categoryTreeNodeLevel' => 4,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
),
'parentCategoryTreeNodeHref' => 'someurl',
),
2 =>
array (
'category' =>
array (
'categoryId' => 804,
'categoryName' => 'Signs',
),
'categoryTreeNodeLevel' => 3,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
3 =>
array (
'category' =>
array (
'categoryId' => 821,
'categoryName' => 'Distillery/Spirits',
),
'categoryTreeNodeLevel' => 3,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
4 =>
array (
'category' =>
array (
'categoryId' => 1313,
'categoryName' => 'Transportation',
),
'categoryTreeNodeLevel' => 3,
'childCategoryTreeNodes' =>
array (
0 =>
array (
'category' =>
array (
'categoryId' => 69513,
'categoryName' => 'Aeronautica',
),
'categoryTreeNodeLevel' => 4,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
1 =>
array (
'category' =>
array (
'categoryId' => 69514,
'categoryName' => 'Petrol/Oil',
),
'categoryTreeNodeLevel' => 4,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
2 =>
array (
'category' =>
array (
'categoryId' => 69515,
'categoryName' => 'Other Transportation Advert',
),
'categoryTreeNodeLevel' => 4,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
3 =>
array (
'category' =>
array (
'categoryId' => 90648,
'categoryName' => 'Railway',
),
'categoryTreeNodeLevel' => 4,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
),
'parentCategoryTreeNodeHref' => 'someurl',
),
5 =>
array (
'category' =>
array (
'categoryId' => 1525,
'categoryName' => 'Chemist',
),
'categoryTreeNodeLevel' => 3,
'leafCategoryTreeNode' => 1,
'parentCategoryTreeNodeHref' => 'someurl',
),
),
)];
$data = flattenCategoryNodeTree($arr);
var_dump($data);
function flattenCategoryNodeTree($data, $flattened = [], $categoryName = [])
{
foreach($data as $node) {
if(array_key_exists('childCategoryTreeNodes', $node)) {
$categoryName[] = $node['category']['categoryName'];
$flattened = flattenCategoryNodeTree($node['childCategoryTreeNodes'], $flattened, $categoryName);
continue;
} else {
$flattened[$node['category']['categoryId']] = implode('::', array_merge($categoryName, [$node['category']['categoryName']]));
}
}
return $flattened;
}
- Output for 7.1.25 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
- array(11) {
[35]=>
string(30) "Advertising::Other Advertising"
[13601]=>
string(30) "Advertising::Drinks::Coca Cola"
[13613]=>
string(26) "Advertising::Drinks::Pepsi"
[20189]=>
string(45) "Advertising::Drinks::Other Drinks Advertising"
[804]=>
string(26) "Advertising::Drinks::Signs"
[821]=>
string(39) "Advertising::Drinks::Distillery/Spirits"
[69513]=>
string(48) "Advertising::Drinks::Transportation::Aeronautica"
[69514]=>
string(47) "Advertising::Drinks::Transportation::Petrol/Oil"
[69515]=>
string(64) "Advertising::Drinks::Transportation::Other Transportation Advert"
[90648]=>
string(44) "Advertising::Drinks::Transportation::Railway"
[1525]=>
string(44) "Advertising::Drinks::Transportation::Chemist"
}
preferences:
160.2 ms | 404 KiB | 179 Q