コード例 #1
0
<?php

$menu = ['Homepage', 'Register', 'About' => ['The Team', 'Our Story'], 'Contact' => ['Locations', 'Support' => ['1Locations', 'Support' => ['2Locations', 'Support' => ['3Locations', 'Support']]]]];
// Наследуем RecursiveIteratorIterator
class MyMenu extends RecursiveIteratorIterator
{
    public function beginChildren()
    {
        echo "<ul>\n";
    }
    public function endChildren()
    {
        echo "</ul></li>\n";
    }
}
// Рекурсивная итерация
$rit = new MyMenu(new RecursiveArrayIterator($menu), RecursiveIteratorIterator::SELF_FIRST);
echo "<ul>\n";
foreach ($rit as $key => $value) {
    if ($rit->hasChildren()) {
        echo "<li>{$key}\n";
        continue;
    }
    echo "<li>{$value}</li>\n";
}
echo "</ul>\n";