Для того чтобы получить все разделы и подразделы, вам необходимо использовать рекурсивную функцию или алгоритм обхода дерева. В PHP вы можете использовать массивы или объекты для представления дерева разделов и подразделов.
Предположим, у вас есть следующие данные об разделах и подразделах в виде массива:
$categories = [ [ 'id' => 1, 'name' => 'Раздел 1', 'children' => [ [ 'id' => 2, 'name' => 'Подраздел 1.1', 'children' => [ [ 'id' => 3, 'name' => 'Подраздел 1.1.1', 'children' => [] ], [ 'id' => 4, 'name' => 'Подраздел 1.1.2', 'children' => [] ] ] ], [ 'id' => 5, 'name' => 'Подраздел 1.2', 'children' => [] ] ] ], [ 'id' => 6, 'name' => 'Раздел 2', 'children' => [ [ 'id' => 7, 'name' => 'Подраздел 2.1', 'children' => [] ], [ 'id' => 8, 'name' => 'Подраздел 2.2', 'children' => [] ] ] ] ];
Теперь, чтобы получить все разделы и подразделы, можно использовать рекурсивную функцию. Вот пример такой функции:
function getCategories($categories) { $result = []; foreach ($categories as $category) { $result[] = $category; if (!empty($category['children'])) { $result = array_merge($result, getCategories($category['children'])); } } return $result; }
Вызов этой функции с входными данными нашего примера вернет все разделы и подразделы:
$allCategories = getCategories($categories); print_r($allCategories);
Результат выполнения будет:
Array ( [0] => Array ( [id] => 1 [name] => Раздел 1 [children] => Array ( [0] => Array ( [id] => 2 [name] => Подраздел 1.1 [children] => Array ( [0] => Array ( [id] => 3 [name] => Подраздел 1.1.1 [children] => Array ( ) ) [1] => Array ( [id] => 4 [name] => Подраздел 1.1.2 [children] => Array ( ) ) ) ) [1] => Array ( [id] => 5 [name] => Подраздел 1.2 [children] => Array ( ) ) ) ) [1] => Array ( [id] => 6 [name] => Раздел 2 [children] => Array ( [0] => Array ( [id] => 7 [name] => Подраздел 2.1 [children] => Array ( ) ) [1] => Array ( [id] => 8 [name] => Подраздел 2.2 [children] => Array ( ) ) ) ) )
Как видите, функция рекурсивно обходит все вложенные уровни и возвращает массив со всеми разделами и подразделами.