如何使用递归方法创建PHP菜单?

如何使用递归方法创建PHP菜单?,php,list,recursion,foreach,Php,List,Recursion,Foreach,我正在创建一个显示年份和发行号的递归菜单。不知怎的,它只是为每个数组元素打印一次 这就是我需要的: 请选择年份->2013年->第1期、第2期、第3期、第4期 我得到的是: 请选择一个年份->2013年->问题#1 这是我目前的代码: <?php echo "<div id='cssmenu'>"; echo "<ul>"; echo "<li class='has-sub'><a href='#'><span>Please se

我正在创建一个显示年份和发行号的递归菜单。不知怎的,它只是为每个数组元素打印一次

这就是我需要的: 请选择年份->2013年->第1期、第2期、第3期、第4期

我得到的是: 请选择一个年份->2013年->问题#1

这是我目前的代码:

<?php
echo "<div id='cssmenu'>";
echo "<ul>";
echo "<li class='has-sub'><a href='#'><span>Please select a Year</span></a>";
echo "<ul>";
$dir = new DirectoryIterator('/usr/apps/webdata/backend/assets/newsletters/temp');
$list = array();
foreach($dir as $file)
{
    if ($file->isDot()) {
        continue;
    }

    $string = $file;
    if (preg_match_all("#(\d{1,})#", $string, $matches, PREG_SET_ORDER)) {
        foreach($matches as $match)
        {
            $issue = $match[0];

            while (list($key, $value) = each($match)) {
                //YEAR
                if (strlen($value) == 4) {
                    $uyear = $value;
                    //echo "Year: $uyear \n";
                }
                // ISSUE#
                elseif (strlen($value) == 1) {
                    $uissue = $value;
                    //echo "Issue: $uissue \n";
                }
            }
        }
    }

    if (!isset($list[$uyear])) {
        $list[$uyear] = array();
        echo "<li class='has-sub'><a href='#'><span>" . $uyear . " </span></a>";
        echo "<ul>";
    }

    if (!in_array($uissue, $list[$uyear])) {
        $list[$uyear][] = $uissue;
        $a = count($uissue);
        for ($i=0; $i<$a; $i++) {
            echo " <a class=fancypdf href='#' onclick=myPDF('".$file."')> Issue# ".$uissue."   </a>";
            echo "</li>";
        }
        echo "</ul>";
        echo "</li>";
    }
}

echo "</ul>";
echo "</ul>";
echo "</ul>";
echo "</div>";
////IM USING THIS PRINT JUST TO VERIFY IF THE FUNCTIONS GOES THROUGH ALL THE ELEMENTS
print_r($list);
?>

你能举例说明一下
$string
是什么吗?我猜你的正则表达式不正确。我的字符串是:/usr/apps/webdata/backend/assets/newsletters/temp/Newletter_2013_1.pdf,我的函数从中提取年份和问题,这是正确的,但当我试图输出此答案时,它没有这样做
$a = count($uissue);
for($i=0;$i<$a; $i++)
{
    echo " <a class=fancypdf href='#' onclick=myPDF('".$file."')> Issue# ".$uissue."   </a>";
    echo "</li>";
}