PHP代码输出三级导航


php code to output three level navigation

我正在一个ExpressionEngine网站上工作,我有一个循环输出一个排序列表。我想做的是使用PHP输出一个三层深度的列表。

/apples/black/rotten
/apples/green/cortland
/apples/green/cortland
/apples/red/granny
/apples/red/granny
/bananas/green/bad
/bananas/green/bad
/bananas/yellow/good
/bananas/yellow/good
/oranges/orange/tasty
/oranges/yellow/small
/oranges/yellow/small

将其转换为嵌套列表的最佳方法是什么?

显然,这是一个为了说明而制作的列表。这几天我一直想弄明白这个问题,但一直没有找到答案。递归是一个选项吗?

$arr = array();
foreach (file(..., FILE_IGNORE_NEW_LINES) as $line)
{
    $tmp = explode("/", substr($line, 1));
    for ($i=0; $i<=2; $i++)
    {
        switch ($i)
        {
            case 0:
                if ( ! isset($arr[$tmp[0]]))
                {
                    $arr[$tmp[0]] = array();
                }
                break;
            case 1:
                if ( ! isset($arr[$tmp[1]]))
                {
                    $arr[$tmp[0]][$tmp[1]] = $tmp[2];
                }
                break;
        }
    }
}

使用file假设表达式结果存储在文本文件中,
你可以直接迭代它已经在数组