How can the hierarchy of categories and subcategories be efficiently managed in a PHP nested set?

To efficiently manage the hierarchy of categories and subcategories in a PHP nested set, one approach is to use a recursive function to traverse the nested set structure and retrieve the categories and subcategories in a hierarchical manner. This function can be used to display the categories in a nested list format or perform operations such as adding, updating, or deleting categories within the nested set.

```php
<?php

function displayCategories($categories, $parentId = 0, $level = 0) {
    foreach ($categories as $category) {
        if ($category['parent_id'] == $parentId) {
            echo str_repeat('-', $level) . $category['name'] . "\n";
            displayCategories($categories, $category['id'], $level + 1);
        }
    }
}

// Example usage
$categories = [
    ['id' => 1, 'parent_id' => 0, 'name' => 'Category 1'],
    ['id' => 2, 'parent_id' => 1, 'name' => 'Subcategory 1'],
    ['id' => 3, 'parent_id' => 1, 'name' => 'Subcategory 2'],
    ['id' => 4, 'parent_id' => 0, 'name' => 'Category 2'],
    ['id' => 5, 'parent_id' => 4, 'name' => 'Subcategory 3'],
];

displayCategories($categories);
```

This code snippet defines a function `displayCategories` that recursively displays the categories and subcategories in a nested list format based on the nested set structure provided in the `$categories` array. The function takes an array of categories, a parent ID (defaulting to 0 for the root level), and a level parameter to keep track of the nesting depth. The example usage demonstrates how to display the categories and subcategories using the provided nested set structure.