首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

用 list 处置树状数据(邻接列表)

2013-11-05 
用 list 处理树状数据(邻接列表)现有一个数组版主是个大好人[解决办法]斑竹对无限级树情有独钟。每次看都有

用 list 处理树状数据(邻接列表)
现有一个数组

版主是个大好人
[解决办法]
用 list 处置树状数据(邻接列表)
斑竹对无限级树情有独钟。
每次看都有新收获。
[解决办法]
用 list 处置树状数据(邻接列表)
[解决办法]
前排 学习!
[解决办法]
学习了。呵呵

[解决办法]
用 list 处置树状数据(邻接列表)
[解决办法]
原来是这样表现的。
[解决办法]
真简洁,学习了。
[解决办法]
写的不错啊,学习了
[解决办法]
  static void Main(string[] args)
        {
            double a, b, c, p, h, area;
            Console.Write("请输入三角形的边A: ");
            string s = Console.ReadLine();
            a = double.Parse(s);
            Console.Write("请输入三角形的边B: ");
            s = Console.ReadLine();
            b = double.Parse(s);
            Console.Write("请输入三角形的边C: ");
            s = Console.ReadLine();
            c = double.Parse(s);
            if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)


            {
                Console.WriteLine("三角形的三边分别为:a={0},b={1},c={2}", a, b, c);
                p = a + b + c;
                h = p / 2;
                area = Math.Sqrt(h * (h - a) * (h - b) * (h - c));
                Console.WriteLine("三角形的周长={0},面积={1}",p,area);
            }
            else Console.WriteLine("无法构成三角形!");
            Console.ReadKey();
        }


[解决办法]
不好意思,上面那个发错了。。。我不是故意的。。我是想试一下这个编辑器的功能
[解决办法]
学习了用 list 处置树状数据(邻接列表)
[解决办法]
牛X,学习了用 list 处置树状数据(邻接列表)
[解决办法]
用 list 处置树状数据(邻接列表)






http://www.javadad.com
[解决办法]
学习了  版主
[解决办法]
不错,学习学习了
[解决办法]
很不错,学习了
[解决办法]
支持一下用 list 处置树状数据(邻接列表)
[解决办法]
hao......
[解决办法]
观摩,学习,支持,接分
[解决办法]
厉害啊111111
[解决办法]
学习了。用 list 处置树状数据(邻接列表)
[解决办法]
用 list 处置树状数据(邻接列表)
[解决办法]
谢谢楼主分享
[解决办法]
谢谢楼主分享,学习啦!
[解决办法]
学习了用 list 处置树状数据(邻接列表)
[解决办法]
眩技那  用 list 处置树状数据(邻接列表)
[解决办法]
简洁明了 树 总是用递归方便 
[解决办法]
真的很不错,很有用,可以学习学习

[解决办法]
用 list 处置树状数据(邻接列表)
[解决办法]
LZ的思路和我用的思路是一样的,但代码比我的要少很多,比我高明多了。

这种算法的思路就是建立一人以parent_id为键名的二级数组,用递归调用这个数组。

array(2978) {
  [0]=>
  object(stdClass)#1 (4) {
    ["id"]=>
    string(8) "50094064"
    ["subject"]=>
    string(22) "在线影视/电子书"
    ["parent_id"]=>
    int(0)
    ["type_id"]=>
    int(0)
  }
.........

上面是组织形式,个人习惯把这分类生成对象保存到txt文本里面,生成的有自定义键名,不能直接list(),用array_values取出后,再用list还是不正常,又换了$t的元素键名,还是不正常。

//源数组 转化了数组 下面是foreach里面的内容 这个list形式不能用

$t=array_values($t);
list($id,$a[$pid][$t[$id],$pid,$tid) = $t;

于是又改了一下,能用了。

//源数据转换成了对象
foreach($object_tmp as $t) {
$t=array($t->subject,$t->id,$t->parent_id);
list($a[$pid][$id],$id,$pid) = $t;
}


不过,换了一位置。

//源数据转换成了对象
foreach($object_tmp as $t) {
$t=array($t->id,$t->subject,$t->parent_id);
list($id,$a[$pid][$id],$pid) = $t;
}

又不能用了,看了半天list的说明,也没能找到答案
[解决办法]
附上本人原来的做法:
对于list转化二维数组的,个人采取比较笨拙的方法,源数组与上面的类似

//以父级id为键名的  更多一维的(一般3维)数组
$tmp=array();
foreach ($item_category as $it){
if( count($tmp[$it["parent_id"]]) ){
$tmp[$it["parent_id"]][count($tmp[$it["parent_id"]])]=$it;
}else{
$tmp[$it["parent_id"]][0]=$it;
}
}

$tmp就是相当于LZ方法的数组$a

从项目文件里面拿出来的,写在控制器里面的,就不改了

//用于存放数据(整理好的)的公共变量
var $sorta=array();
//树形排序核心部分  pid:父级起始  tmp以父级id为第一维的数组
public function get_all_($pid,$tmp){
$tt=$tmp[$pid];
foreach($tt  as $ttt){
$this->sorta[count($this->sorta)]=$ttt;
$this->get_all_($ttt["id"],$tmp);
}
}

[解决办法]
换成javascript的就最好
[解决办法]
学习了,不错
[解决办法]
不错不错,这个必须收藏一下。
------解决方案--------------------


好   很简单  方便了
[解决办法]
错不错,这个必须收藏一下。
[解决办法]
学习了    方法很简便

[解决办法]
学习了    方法很简便
[解决办法]
学习了用 list 处置树状数据(邻接列表)用 list 处置树状数据(邻接列表)

热点排行