zoukankan      html  css  js  c++  java
  • 关于一个无极限分类的问题

    在一个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
                            (
                            )
    
                    )
    
            )
    
    )
    

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

  • 相关阅读:
    C++ 扩展 Op
    Python 扩展 Op
    VS Code 调试 OneFlow
    运行时数据获取
    OFRecord 图片文件制数据集
    OFRecord 数据集加载
    OFRecord 数据格式
    OneFlow 并行特色
    Consistent 与 Mirrored 视角
    作业函数的定义与调用
  • 原文地址:https://www.cnblogs.com/lantor/p/7351383.html
Copyright © 2011-2022 走看看