What are some best practices for organizing and displaying hierarchical data, such as categories and subcategories, in PHP?

Organizing and displaying hierarchical data, such as categories and subcategories, in PHP can be achieved by using recursive functions to traverse the data structure and display it in a nested format. One common approach is to store the hierarchical data in a database table with parent-child relationships, and then use recursive queries to fetch and display the data in a tree-like structure.

<?php
// Function to display hierarchical data in a nested format
function displayCategories($categories, $parent_id = 0, $level = 0) {
    foreach ($categories as $category) {
        if ($category['parent_id'] == $parent_id) {
            echo str_repeat('-', $level) . $category['name'] . "<br>";
            displayCategories($categories, $category['id'], $level + 1);
        }
    }
}

// Sample data representing categories and subcategories
$categories = [
    ['id' => 1, 'name' => 'Category 1', 'parent_id' => 0],
    ['id' => 2, 'name' => 'Subcategory 1.1', 'parent_id' => 1],
    ['id' => 3, 'name' => 'Subcategory 1.2', 'parent_id' => 1],
    ['id' => 4, 'name' => 'Category 2', 'parent_id' => 0],
    ['id' => 5, 'name' => 'Subcategory 2.1', 'parent_id' => 4],
];

// Display the hierarchical data
displayCategories($categories);
?>