Det måste finnas vackrare och effektivare sätt att göra det här på, men är det något sådant här du menar?
<?php
// test-data to simulate stuff from the database
$categories = array();
$categories[1] = array('title' => '1', 'parent' => 0);
$categories[2] = array('title' => '2', 'parent' => 0);
$categories[3] = array('title' => '3', 'parent' => 0);
$categories[4] = array('title' => '4', 'parent' => 0);
$categories[5] = array('title' => '5', 'parent' => 1);
$categories[6] = array('title' => '6', 'parent' => 1);
$categories[7] = array('title' => '7', 'parent' => 1);
$categories[8] = array('title' => '8', 'parent' => 2);
$categories[9] = array('title' => '9', 'parent' => 3);
$categories[10] = array('title' => '10', 'parent' => 4);
$categories[11] = array('title' => '11', 'parent' => 2);
$categories[12] = array('title' => '12', 'parent' => 3);
$categories[13] = array('title' => '13', 'parent' => 1);
$categories[14] = array('title' => '14', 'parent' => 5);
function print_categories($parent, $level = 0)
{
global $categories;
$children = array();
foreach ($categories as $catID => $arrTitleAndParent)
{
if ($arrTitleAndParent['parent'] == $parent)
{
$children[$catID] = $arrTitleAndParent;
}
}
foreach (array_keys($children) as $childID)
{
unset($GLOBALS['categories'][$childID]);
}
if (count($children) > 0)
{
echo '<ul class="level-', $level, '">', "\n";
foreach ($children as $childID => $childData)
{
echo '<li id="', $childID, '" class="level-', $level, '">', "\n", $childData['title'], "\n";
print_categories($childID, $level+1);
echo '</li>', "\n";
}
echo '</ul>', "\n";
}
}
print_categories(0);
(ledsen att jag ändrade variabelnamn etc, men blev så distraherad i mitt tänkande av get_cats (hämta katter?!) så jag skrev om det.

