php代码输出三级导航

时间:2011-12-03 03:59:58

标签: php list sorting recursion nested

我正在使用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

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

显然,这是一个用于说明的弥补清单。我已经试图解决这个问题几天了,但没有运气。递归是一种选择。

1 个答案:

答案 0 :(得分:0)

$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;
        }
    }
}

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