What are some best practices for efficiently retrieving and sorting hierarchical data in PHP, such as categories and subcategories?

Retrieving and sorting hierarchical data in PHP, such as categories and subcategories, can be efficiently done by using recursive functions to traverse the tree structure. One common approach is to store the hierarchical data in a database table with fields like id, parent_id, and name. By recursively querying and sorting the data based on parent-child relationships, you can efficiently retrieve and display the hierarchical data in a structured manner.

// Function to retrieve hierarchical data from database
function getCategories($parent_id = 0, $level = 0) {
    $result = [];
    
    // Query database for categories with parent_id
    $categories = queryDatabase("SELECT * FROM categories WHERE parent_id = $parent_id");
    
    foreach ($categories as $category) {
        $category['name'] = str_repeat('--', $level) . $category['name'];
        $result[] = $category;
        
        // Recursively call function for subcategories
        $result = array_merge($result, getCategories($category['id'], $level + 1));
    }
    
    return $result;
}

// Example usage
$categories = getCategories();
foreach ($categories as $category) {
    echo $category['name'] . "\n";
}