分页: 101/120 第一页 上页 96 97 98 99 100 101 102 103 104 105 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Apr 4

<?
//测试数据
$ar = array(
array(id=>1,pid=>0),
array(id=>2,pid=>0),
array(id=>3,pid=>2),
array(id=>4,pid=>0),
array(id=>5,pid=>3),
array(id=>6,pid=>1),
array(id=>7,pid=>8),
array(id=>8,pid=>6),
array(id=>9,pid=>7),
array(id=>10,pid=>9)
);

//排序函数
function cmd($a,$b) {
if($a[pid]==$b[pid]) return 0;
return $a[pid]>$b[pid]?1:-1;
}

//排序,为避免数据中父节点在子节点后面出现,这种情况在多次修改数据后经常会发生的
//排序的目的就是防止这种情况造成的混乱
uasort($ar,cmd);

//定义目标数组
$d = array();
//定义索引数组,用于记录节点在目标数组的位置
$ind = array();

foreach($ar as $v) {
$v[child] = array(); //给每个节点附加一个child项
if($v[pid] == 0) {
  $i = count($d);
  $d[$i] = $v;
  $ind[$v[id]] =& $d[$i]; //关键! 指向目标数组
}else {
  $i = count($ind[$v[pid]][child]);
  $ind[$v[pid]][child][$i] = $v;
  $ind[$v[id]] =& $ind[$v[pid]][child][$i]; //添加到父亲的孩子节点, 前提,一定要排序!!! 不然就落空了!!(不知道怎么用语言表达...:( )
}
}
//检查结果
print_r($d);
?>

这个算法以前自己也想过

但系发现了一个问题无法解决,就放下了

那个问题就是在顺序调乱的情况下无法进行

今天从phpe里看到这个算法

感觉到的确精辟

通过uasort解决了在顺序调乱的情况下

Apr 3

小学生先会调位现在

上班了也来个调位

晕呀

Apr 2
每个星期得个一两日,大部分时间都俾人分了
Apr 1
呵呵
花了一些时间去找了相关资料
终于找到了那个文件
/etc/fstab
这个文件真难找呀

Mar 28
来自digg的消息表明:有人发现了藏在PHP中的一个复活节彩蛋。用php写的网页,在其网址的后面追加字符串 “?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 ”,之后刷新网页,你会看到什么呢?有兴趣的人可以尝试一下。
分页: 101/120 第一页 上页 96 97 98 99 100 101 102 103 104 105 下页 最后页 [ 显示模式: 摘要 | 列表 ]