关于一个无极限分类的问题

在一个category.txt文件里,有如下内容

1	单缸洗衣机	6
2	冰箱			5
3	苹果			4
4	水果			0
5	电器			0
6	洗衣机		5
……

要求将文件的数据按层级列出,效果如下

[
	'水果' => [
		'苹果' => []
	],
	'电器' => [
		'冰箱' => [],
		'洗衣机' => [
			'单缸洗衣机' => []
		]
	]
]
// 代码如下
<?php
	$arr = array(
		array('id' => 1, 'name' => '单缸洗衣机', 'pid' => 6),
		array('id' => 2, 'name' => '冰箱', 'pid' => 5),
		array('id' => 3, 'name' => '苹果', 'pid' => 4),
		array('id' => 4, 'name' => '水果', 'pid' => 0),
		array('id' => 5, 'name' => '电器', 'pid' => 0),
		array('id' => 6, 'name' => '洗衣机', 'pid' => 5),
	);
	
	function category($arr, $pid = 0)
	{
		$tree = array();
		// 主要卡在这里
		foreach ($arr as $key => $val) {
			if ($val['pid'] == $pid) {
				$tree[$val['name']] = category($arr, $val['id']);
			}
		}
		
		return $tree;
	}
	
	echo '<pre>';
	print_r(category($arr));
	echo '</pre>';
?>
// 效果如下
Array
(
    [水果] => Array
        (
            [苹果] => Array
                (
                )

        )

    [电器] => Array
        (
            [冰箱] => Array
                (
                )

            [洗衣机] => Array
                (
                    [单缸洗衣机] => Array
                        (
                        )

                )

        )

)

看到有问题的朋友欢迎指正,谢谢!

posted @ 2017-08-12 20:20  凭栏知潇雨  阅读(130)  评论(0编辑  收藏  举报