算法探讨! up者有分! 看你的结果就是CSDN左边的树嘛!以前看到唠叨,大龄青年都贴过类似的代码,我就不贴了,楼主自己参考一下http://expert.csdn.net/Expert/topic/2980/2980875.xml?temp=.3668939 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function SplitMyArray($myarray){ if (is_array($myarray)) { foreach ($myarray as $k => $v) { SplitMyArray($v); } } else echo $myarray . "\n";}SplitMyArray($array);没测试呢。。 http://fason.nease.net/samples/select/还是这个好,也是无限级的。 真不知道你这个数据打算怎么维护<?php$d = array( 1 => array( 0 => array( 1 => "<option value='1'>|-分类一</option>", 2 => "<option value='2'>|-分类二</option>", 3 => "<option value='3'>|-分类三</option>" ) ), 2 => array( 1 => array( 4 => "<option value='4'>|--分类一子分类</option>", 5 => "<option value='5'>|--分类一子分类二</option>" ), 2 => array( 8 => "<option value='8' selected>|--分类二子分类一</option>", 9 => "<option value='9'>|--分类二子分类二</option>" ), 3 => array( 10 => "<option value='10'>|--三类二子分类一</option>", ), ), 3 => array( 4 => array( 6 => "<option value='6'>|---分类一子分类的子分类</option>", ), 8 => array( 11 => "<option value='11'>|---二子分类二</option>", ), ), 4 => Array( 6 => array( 7 => "<option value='7'>|----分类一子分类的子分类的子分类</option>", ), ));function foo($in,$deep,$key=0) { if(!isset($in[$deep])) return; foreach($in[$deep] as $pid=>$ar) if($key == $pid) foreach($ar as $id=>$v) { echo "$v\n"; foo($in,$deep+1,$id); }}foo($d,1,0);?> 我喜欢用id和parent_id来实现,这样避免了级数问题。 我喜欢用id和parent_id来实现,这样避免了级数问题。 注释一下/***传入参数$in 数据数组,$deep 当前层次,$key=0 上级键*/function foo($in,$deep,$key=0) { if(!isset($in[$deep])) return; //如果没有所需层次则返回 // 遍历当前层次数据 foreach($in[$deep] as $pid=>$ar) if($key == $pid) { //检查是否有父节点 foreach($ar as $id=>$v) { echo "$v\n"; foo($in,$deep+1,$id); //递归,检查当前节点是否有子节点 } }} to: xuzuning(唠叨) 这个数组是用一个sql 将 无限分类表类的所有数据入这个数组的,这个数组只是取值,无需维护^_^。原本是被这问题困扰了一会儿,后面己自己解决了, 和唠叨老大的惊人相似。 现将代码帖出来。是放置在类中使用的,下面是解决上面问题的部分--------------------------// 分析数组function ReSort($Arr,$a,$b) { //$Arr 为上述的数组 if(is_array($Arr[$a][$b])) { foreach($Arr[$a][$b] as $k=>$v) { //echo "<hr>".$k.$v; $this->sort .= $v; $this->ReSort($Arr,$a+1,$k); } } Return $this->sort;}---------------明日结帖。 现有一个文本体积大约2G, 计算机内存只有1G, 需要使用php对数据进行分析,如何读取如此体积的文件 PHP 如何访问及修改图片属性 PHPmailer 发信时间过长,有否解决方法?(其他发邮件方式请提出) php文件加密 正则表达式中奇怪的问题 php远程登录linux系统,急 高分讨论:怎样实现WEB程序注册码功能!!!! 有何模板有smarty那样强大的缓存功能? 文件压缩问题? 我用php实现上传的难题? 为什么换行符接收不了,我用多行文本框,里面有换行符,然后把它放到MySQL数据里的Body(我用的是CHAR类型的),可是我发现换行符它不认 求一正则表达式
{
if (is_array($myarray))
{
foreach ($myarray as $k => $v)
{
SplitMyArray($v);
}
}
else
echo $myarray . "\n";
}
SplitMyArray($array);
没测试呢。。
还是这个好,也是无限级的。
$d = array(
1 => array(
0 => array(
1 => "<option value='1'>|-分类一</option>",
2 => "<option value='2'>|-分类二</option>",
3 => "<option value='3'>|-分类三</option>"
)
),
2 => array(
1 => array(
4 => "<option value='4'>|--分类一子分类</option>",
5 => "<option value='5'>|--分类一子分类二</option>"
),
2 => array(
8 => "<option value='8' selected>|--分类二子分类一</option>",
9 => "<option value='9'>|--分类二子分类二</option>"
),
3 => array(
10 => "<option value='10'>|--三类二子分类一</option>",
),
),
3 => array(
4 => array(
6 => "<option value='6'>|---分类一子分类的子分类</option>",
),
8 => array(
11 => "<option value='11'>|---二子分类二</option>",
),
),
4 => Array(
6 => array(
7 => "<option value='7'>|----分类一子分类的子分类的子分类</option>",
),
)
);function foo($in,$deep,$key=0) {
if(!isset($in[$deep])) return;
foreach($in[$deep] as $pid=>$ar)
if($key == $pid)
foreach($ar as $id=>$v) {
echo "$v\n";
foo($in,$deep+1,$id);
}
}foo($d,1,0);
?>
/***
传入参数
$in 数据数组,
$deep 当前层次,
$key=0 上级键
*/
function foo($in,$deep,$key=0) {
if(!isset($in[$deep])) return; //如果没有所需层次则返回
// 遍历当前层次数据
foreach($in[$deep] as $pid=>$ar)
if($key == $pid) { //检查是否有父节点
foreach($ar as $id=>$v) {
echo "$v\n";
foo($in,$deep+1,$id); //递归,检查当前节点是否有子节点
}
}
}
是放置在类中使用的,下面是解决上面问题的部分
--------------------------
// 分析数组
function ReSort($Arr,$a,$b) { //$Arr 为上述的数组
if(is_array($Arr[$a][$b])) {
foreach($Arr[$a][$b] as $k=>$v) {
//echo "<hr>".$k.$v;
$this->sort .= $v;
$this->ReSort($Arr,$a+1,$k);
}
}
Return $this->sort;
}
---------------
明日结帖。