Prova una cosa cosi:
Codice PHP:
<?php
$tree = array(array('livello' => 1, 'nome' => 'paolo', 'livello_vis' => 0),
array('livello' => 2, 'nome' => 'nicola', 'livello_vis' => 0),
array('livello' => 2, 'nome' => 'alessia', 'livello_vis' => 1),
array('livello' => 3, 'nome' => 'francesco', 'livello_vis' => 2),
array('livello' => 2, 'nome' => 'gianfranco', 'livello_vis' => 0),
array('livello' => 3, 'nome' => 'carmelo', 'livello_vis' => 0),
array('livello' => 4, 'nome' => 'ermenegilda', 'livello_vis' => 0));
echo('<ul>');
$previous_level = 1;
foreach ($tree as $row) {
if ($row['livello_vis'] > 0) {
continue;
}
if ($row['livello'] == $previous_level) {
echo("[*]{$row['nome']}");
} elseif ($row['livello'] > $previous_level) {
echo("[*]<ul>");
echo("[*]{$row['nome']}");
} elseif ($row['livello'] < $previous_level) {
$count = $previous_level - $row['livello'];
echo(str_repeat("[/list]", $count));
echo("[*]{$row['nome']}");
}
$previous_level = $row['livello'];
}
$count = $previous_level - 1;
echo(str_repeat("[/list]", $count));
echo('[/list]');
?>