3v4l.org

run code in 300+ PHP versions simultaneously
<?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; }

preferences:
51.21 ms | 402 KiB | 5 Q