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
                            (
                            )
    
                    )
    
            )
    
    )
    

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

  • 相关阅读:
    基于jdk8+selenium3+chrome86的UI自动化测试
    服务器虚拟化管理解决方案PVM发送c+a+d组合键
    web端测试技巧记录
    redis-基本数据类型及应用场景
    idea编译时报GC overhead limit exceeded
    cmd常用命令
    @property和@属性.setter的用法
    游陶然亭记
    山城
    记京都春节
  • 原文地址:https://www.cnblogs.com/lantor/p/7351383.html
Copyright © 2011-2022 走看看