Ich arbeite an einem Front-End-Web-App, wo eine verschachtelte ungeordnete Liste für das jQuery-Plugin mcdropdown verwendet werden würde.
Hier ist die Datenstruktur von PHP: ein verschachteltes Array von Arrays:
Array
(
[0] => Array
(
[fullpath] => ../foil/alphanumeric/
[depth] => 0
)
[1] => Array
(
[fullpath] => ../foil/alphanumeric/letters/
[depth] => 1
)
[2] => Array
(
[fullpath] => ../foil/alphanumeric/numbers/
[depth] => 1
)
[3] => Array
(
[fullpath] => ../foil/alphanumeric/numbers/symbols/
[depth] => 2
)
)
Im Grunde genommen habe ich die hervorragende Antwort von diese Frage zu SO , ein wenig verändert:
global $fullpaths; // $fullpaths contains the above data structure in print_r
$result = '';
$currentDepth = -1;
while(!empty($fullpaths))
{
$currentNode = array_shift($fullpaths);
if($currentNode['depth'] > $currentDepth)
{
$result .='<ul>';
}
if($currentNode['depth'] < $currentDepth)
{
$result .=str_repeat('</ul>', $currentDepth - $currentNode['depth']);
}
$result .= '<li>'. $currentNode['fullpath'] .'</li>';
$currentDepth = $currentNode['depth'];
if(empty($fullpaths))
{
$result .= str_repeat('</ul>', 1 + $currentDepth);
}
}
print $result;
und erhielt die folgende Ausgabe:
<ul>
<li>../foil/alphanumeric/</li>
<ul>
<li>../foil/alphanumeric/letters/</li>
<li>../foil/alphanumeric/numbers/</li>
<ul>
<li>../foil/alphanumeric/numbers/symbols/</li>
</ul>
</ul>
</ul>
Was das jQuery-Plugin mcdropdown nicht akzeptieren kann, da es etwas wie dieses erwartet:
<li rel="1">
'Alphanumeric'
<ul>
<li rel="2">'Letters'</li>
<li rel="3">'Numbers'
<ul>
<li rel="4">'Symbols'</li>
</ul>
</li>
</ul>
</li>
Um ehrlich zu sein, verstehe ich nicht ganz, wie die Antwort auf diese Frage funktioniert. Ich habe versucht, diese Lösung zu ändern, um mit meiner Situation fertig zu werden, bin aber trotzdem gescheitert.
Jede Hilfe und Anregung ist im Voraus sehr willkommen.