$tree = array ( array ( 'id' => 1, 'parent' => 0, 'name' => '祖父', 'child' => array ( array ( 'id' => 3, 'parent' => 1, 'name' => '叔伯' ), array ( 'id' => 4, 'parent' => 1, 'name' => '父亲', 'child' => array ( array ( 'id' => 5, 'parent' => 4, 'name' => '儿子' ) ) ) ) ), array ( 'id' => 2, 'parent' => 0, 'name' => '祖母' ) );
欲达到效果的html代码
祖父 叔伯 父亲 儿子 祖母
不知道多维数组的具体维数,根据数据库得到的信息获得。
不使用递归,能实现这个效果吗
回复讨论(解决方案) 你是递归来的,当然应该递归去 $tree = array ( array ( 'id' => 1, 'parent' => 0, 'name' => '祖父', 'child' => array ( array ( 'id' => 3, 'parent' => 1, 'name' => '叔伯' ), array ( 'id' => 4, 'parent' => 1, 'name' => '父亲', 'child' => array ( array ( 'id' => 5, 'parent' => 4, 'name' => '儿子' ) ) ) ) ), array ( 'id' => 2, 'parent' => 0, 'name' => '祖母' ) );function 递归($ar, $deep=0) { echo str_repeat(\t, $deep) . \n; foreach($ar as $item) { echo str_repeat(\t, $deep + 1) . $item[name]; if(isset($item['child'])) { echo \n; 递归($item['child'], $deep+2); } echo \n; } echo str_repeat(\t, $deep) . \n;}递归($tree);
你是递归来的,当然应该递归去 $tree = array ( array ( 'id' => 1, 'parent' => 0, 'name' => '祖父', 'child' => array ( array ( 'id' => 3, 'parent' => 1, 'name' => '叔伯' ), array ( 'id' => 4, 'parent' => 1, 'name' => '父亲', 'child' => array ( array ( 'id' => 5, 'parent' => 4, 'name' => '儿子' ) ) ) ) ), array ( 'id' => 2, 'parent' => 0, 'name' => '祖母' ) );function 递归($ar, $deep=0) { echo str_repeat(\t, $deep) . \n; foreach($ar as $item) { echo str_repeat(\t, $deep + 1) . $item[name]; if(isset($item['child'])) { echo \n; 递归($item['child'], $deep+2); } echo \n; } echo str_repeat(\t, $deep) . \n;}递归($tree);
我这个不是通过递归获得的,是用你写的一篇文章中的方法 http://bbs.csdn.net/topics/370094009
数据原型为
$data = array( array('id'=>1, 'parent'=>0, 'name'=>'祖父'), array('id'=>2, 'parent'=>1, 'name'=>'父亲'), array('id'=>3, 'parent'=>1, 'name'=>'叔伯'), array('id'=>4, 'parent'=>2, 'name'=>'自己'), array('id'=>5, 'parent'=>4, 'name'=>'儿子'),);
不递归能演变成我欲达到的html代码的效果吗
祖父 叔伯 父亲 儿子 祖母
