贴一段唠叨老大(xuzuning)写过的方法,我研读了良久,至今未懂...<?
$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=>1),
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();
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);
?>
$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=>1),
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();
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);
?>
解决方案 »
- PHP新手求 网站浏览量统计方法.可用文件记忆
- 诡异,CUrl抓取的图片都变马赛克...
- 高手请进!在mysql中插入一个blob字段用来存储图片,怎样从数据库中存入和读取图片呢?
- 求高手救助 出现很多问题 不知道怎么回事儿。。。拜托了
- 要进行手机网站的开发,有没有手机模拟器?
- php 和MYSQL 连接问题 在线急
- 各位老大这个问题应该怎么解决啊?Fatal error: Call to undefined function mysql_connect() in F:\phptest\chap01\test-mysql.php on l
- php中有类似asp.net中的datagrid吗?
- 请问有谁出现过这样的问题??
- 麻烦熟悉phplib的朋友帮忙看段程序
- php画图问题,高人乱入
- 简单问题,帮忙写个正则相关的判断
foreach($ar as $i=>$v) {
if($v['fup'] == $id) {
echo "$i,";
foo($ar, $i); //递归
}
}
}foo($forum, 4);递归很简单,但是效率不高