<?php $data = array( array ( 'category_id' => 20, 'category_name' => 'Category 1', 'main_category' => 0, 'sub_categories' => array( array ( 'category_id' => 25, 'category_name' => 'Category 1.3', 'main_category' => 20, 'sub_categories' => [], ), array ( 'category_id' => 26, 'category_name' => 'Category 1.4', 'main_category' => 20, 'sub_categories' => array ( array ( 'category_id' => 30, 'category_name' => 'Category 1.4.1', 'main_category' => 26, 'sub_categories' => [] ), array ( 'category_id' => 31, 'category_name' => 'Category 1.4.2', 'main_category' => 26, 'sub_categories' => [] ) ) ), ) ), array ( 'category_id' => 19, 'category_name' => 'Category 2', 'main_category' => 0, 'sub_categories' => [] ) ); function getChildren($data,$parents,&$result){ foreach($data as $current_category){ $temp = []; $temp['category_id'] = $current_category['category_id']; $new_cat_sequence = array_merge($parents,[$current_category['category_name']]); $temp['category_name'] = implode(" -> ",$new_cat_sequence); $result[] = $temp; getChildren($current_category['sub_categories'],$new_cat_sequence,$result); } } $result = []; getChildren($data,[],$result); print_r($result);
You have javascript disabled. You will not be able to edit any code.