求这个小算法

vovo2000 2011-08-15 09:30:27
我有一个这样子的要求
我有这样子的哈希,保存着这样子的数据
class01-->0
class02-->0
class03-->class02
class04-->calss03
class05-->class04
class06-->class03

key和value表示他们的集成关系,比如class03-->class02 表示class03 继承 class02;
我想输出成这样子
class01
class02
class03==>class02
class04==>calss03==>class02
class05==>class04==>class03==>class02
class06==>class03==>class02

这样子就可以一目了然,看清楚所有类了。
请问怎么做啊。需要用到递归不。
或者不用递归,怎么实现啊

急求明白帝。
在这里谢过了。100分聊表心意。
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vovo2000 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 t5500 的回复:]

PHP code
$ar = array('class01' => 0, 'class02' => 0, 'class03' => 'class02',
'class04' => 'class03', 'class05' => 'class04', 'class06' => 'class03');
$result = array();

function……
[/Quote]
csdn果然强大,这么快就解决了
vovo2000 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuzuning 的回复:]

PHP code
//为便于处理,按邻接列表算法组织数据如下
$ar = array(
array( 'id' => 1, 'pid' => 0, 'name' => 'class01' ),
array( 'id' => 2, 'pid' => 0, 'name' => 'class02' ),
array( 'id' => 3, 'pid' => 2, 'name' => 'c……
[/Quote]

太迅速了 谢谢了。
loufz123645 2011-08-15
  • 打赏
  • 举报
回复
[size=1113px]顶[/size]
teacher1998 2011-08-15
  • 打赏
  • 举报
回复
帮顶吧,
乌镇程序员 2011-08-15
  • 打赏
  • 举报
回复
$ar = array('class01' => 0, 'class02' => 0, 'class03' => 'class02',
'class04' => 'class03', 'class05' => 'class04', 'class06' => 'class03');
$result = array();

function foo($i, $k) {
global $ar, $result;
if (array_key_exists($k, $ar) && $ar[$k] !== 0) {
$result[$i] .= '==>'.$ar[$k];
foo($i, $ar[$k]);
}
else {
$result[$i] .= '';
}
}

foreach($ar as $k => $v) foo($k, $k);

foreach($result as $k => $v) echo $k.$v."<br />";

/*
class01
class02
class03==>class02
class04==>class03==>class02
class05==>class04==>class03==>class02
class06==>class03==>class02
*/
xuzuning 2011-08-15
  • 打赏
  • 举报
回复
//为便于处理,按邻接列表算法组织数据如下
$ar = array(
array( 'id' => 1, 'pid' => 0, 'name' => 'class01' ),
array( 'id' => 2, 'pid' => 0, 'name' => 'class02' ),
array( 'id' => 3, 'pid' => 2, 'name' => 'class03' ),
array( 'id' => 4, 'pid' => 3, 'name' => 'class04' ),
array( 'id' => 5, 'pid' => 4, 'name' => 'class05' ),
array( 'id' => 6, 'pid' => 3, 'name' => 'class06' ),
);
$t = find_parent($ar);

foreach($t as $v) {
echo $v['name'];
while($v['parent']) {
$v = array_pop($v['parent']);
echo " ==> $v[name]";
}
echo '<br>';
}

class01
class02
class03 ==> class02
class04 ==> class03 ==> class02
class05 ==> class04 ==> class03 ==> class02
class06 ==> class03 ==> class02

函数 find_parent 的定义在 http://topic.csdn.net/u/20110728/15/eadffb68-5eb6-40d8-9ec1-2bc439f45322.html

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧