求助,我后台有一个无限级分类树菜单表,我在前台调用此表,怎么才有级数地调用出来 本帖最后由 xiachao2008 于 2012-05-28 18:47:53 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 xuzuning 于 2012-05-28 19:18:23 编辑 我怎么每次一听到无限分类就一哆嗦...这TNND到底是什么神物, 难道就是楼主所说的好几个级别的商品?堆代码就是了. 这个代码有点“简单”看不懂可以指点一下吗$r = array();foreach($ar as $v) { $p =& $r; ——————这个的功有是做什么哟? foreach(str_split(array_shift($v), 2) as $k) { if(! isset($p[$k])) $p[$k] = array(); $p =& $p[$k]; ————这个的功有是做什么哟,为什么要加& } $p['value'] = $v;}print_r($r);唉,总之,上面的代码,我看懂一半,没有看懂一半。。可否指点一下呢? $p =& $r;$p =& $p[$k];引用呀!设原串为 100201,切割后为 10 02 01 ,$r 为数组则 $p 依次引用$r$r['10']$r['10']['02']$r['10']['02']['01'] 其实我的问题是一遇到这样的代码&我就看不懂了。特别是数组代&这样符号的,更是难理解以前在网上搜了些这方面的文档,感觉还是看懂了的,但是当在实际应用中,一遇到,又不会了。 如果你不反感使用 eval 函数,那么可以这样写$r = array();foreach($ar as $v) { $k = "r['" . join("']['", str_split(array_shift($v), 2)) ."']['value']"; eval("\$$k = \$v;");} 递归呀!生成的不是一个树状数组吗?function func($ar) { foreach($ar as $k=>$v) { if($k == 'value') { // 输出本级的数据 }else { func($v); } }} 按照你的提示,我向下面写了下去但是现在问题是,我不知道怎么判断这个子分类结束了。结束了,我得加上</dd> 或者说是 </div>还有一个问题,现在遍历出来的数组只有前3个元素 大分类一个,二维分类一个 三级分类一个。可以帮我看看问题在什么地方吗?别外,我还想问一个问题,我数据库里得到源数组,我用什么函数输出字符串来,人家拿着就可以用这个数组? public function func($arr,$count,$beforcount,$spList){ foreach($arr as $key => $val){ if( $key == 'value') { if($count==1){ $html .= '<div class="right_nav" id="menu_'.$val["t_family_id"].'">'; } else if($count==2 ){ $html .= '<dt class="lef"><h1>'.$val["t_name"].'</h1></dt><dd>'; } else if( $count==3 ){ $html .= '<a href="">'.$val["t_name"].'</a>'; } $spList = array_merge($spList, array($html)); array_shift($arr); } else { $beforcount = $count; $count++; $this->func($val,$count,$beforcount,$spList); } } if(count($arr)==0){ $s_html = ''; foreach($spList as $key => $val){ $s_html = $s_html.$val; } echo "<pre>";print_r($spList);exit(); } } 用 var_export(数组) 得到的是 php 代码,拿来就能用 你给出用 var_export(数组) 得到的结果给你看看 <?phparray ( 10 => array ( 'value' => array ( 't_id' => '4092', 't_name' => '女装', 't_family_id' => '10', 't_orders' => NULL, 't_re' => NULL, ), '01' => array ( 'value' => array ( 't_id' => '4099', 't_name' => '上装', 't_family_id' => '1001', 't_orders' => NULL, 't_re' => NULL, ), '01' => array ( 'value' => array ( 't_id' => '4123', 't_name' => 'T恤/卫衣', 't_family_id' => '100101', 't_orders' => NULL, 't_re' => NULL, ), ), '02' => array ( 'value' => array ( 't_id' => '4124', 't_name' => '针织衫/毛衣', 't_family_id' => '100102', 't_orders' => NULL, 't_re' => NULL, ), ), '03' => array ( 'value' => array ( 't_id' => '4125', 't_name' => '衬衫/雪纺衫', 't_family_id' => '100103', 't_orders' => NULL, 't_re' => NULL, ), ), '04' => array ( 'value' => array ( 't_id' => '4126', 't_name' => '小西服/小外套', 't_family_id' => '100104', 't_orders' => NULL, 't_re' => NULL, ), ), '05' => array ( 'value' => array ( 't_id' => '4127', 't_name' => '风衣/呢大衣', 't_family_id' => '100105', 't_orders' => NULL, 't_re' => NULL, ), ), '06' => array ( 'value' => array ( 't_id' => '4128', 't_name' => '背心/吊带衫', 't_family_id' => '100106', 't_orders' => NULL, 't_re' => NULL, ), ), '07' => array ( 'value' => array ( 't_id' => '4129', 't_name' => '马甲', 't_family_id' => '100107', 't_orders' => NULL, 't_re' => NULL, ), ), '08' => array ( 'value' => array ( 't_id' => '4130', 't_name' => '棉衣/棉服', 't_family_id' => '100108', 't_orders' => NULL, 't_re' => NULL, ), ), '09' => array ( 'value' => array ( 't_id' => '4131', 't_name' => '羽绒服', 't_family_id' => '100109', 't_orders' => NULL, 't_re' => NULL, ), ), 10 => array ( 'value' => array ( 't_id' => '4132', 't_name' => '皮衣/皮草', 't_family_id' => '100110', 't_orders' => NULL, 't_re' => NULL, ), ), ), '02' => array ( 'value' => array ( 't_id' => '4100', 't_name' => '下装', 't_family_id' => '1002', 't_orders' => NULL, 't_re' => NULL, ), '01' => array ( 'value' => array ( 't_id' => '4133', 't_name' => '裤子', 't_family_id' => '100201', 't_orders' => NULL, 't_re' => NULL, ), ), '02' => array ( 'value' => array ( 't_id' => '4134', 't_name' => '牛仔裤', 't_family_id' => '100202', 't_orders' => NULL, 't_re' => NULL, ), ), '03' => array ( 'value' => array ( 't_id' => '4135', 't_name' => '裤袜/丝袜/打底裤', 't_family_id' => '100203', 't_orders' => NULL, 't_re' => NULL, ), ), ), '03' => array ( 'value' => array ( 't_id' => '4101', 't_name' => '裙', 't_family_id' => '1003', 't_orders' => NULL, 't_re' => NULL, ), '01' => array ( 'value' => array ( 't_id' => '4136', 't_name' => '连衣裙', 't_family_id' => '100301', 't_orders' => NULL, 't_re' => NULL, ), ), '02' => array ( 'value' => array ( 't_id' => '4137', 't_name' => '半身裙', 't_family_id' => '100302', 't_orders' => NULL, 't_re' => NULL, ), ), ), ), 20 => array ( 'value' => array ( 't_id' => '4093', 't_name' => '男装', 't_family_id' => '20', 't_orders' => NULL, 't_re' => NULL, ), '01' => array ( 'value' => array ( 't_id' => '4102', 't_name' => '上装', 't_family_id' => '2001', 't_orders' => NULL, 't_re' => NULL, ), '01' => array ( 'value' => array ( 't_id' => '4138', 't_name' => 'T恤', 't_family_id' => '200101', 't_orders' => NULL, 't_re' => NULL, ), ), '02' => array ( 'value' => array ( 't_id' => '4139', 't_name' => '衬衫', 't_family_id' => '200102', 't_orders' => NULL, 't_re' => NULL, ), ), '03' => array ( 'value' => array ( 't_id' => '4140', 't_name' => '外套', 't_family_id' => '200103', 't_orders' => NULL, 't_re' => NULL, ), ), '04' => array ( 'value' => array ( 't_id' => '4141', 't_name' => 'POLO衫', 't_family_id' => '200104', 't_orders' => NULL, 't_re' => NULL, ), ), '05' => array ( 'value' => array ( 't_id' => '4142', 't_name' => '针织衫/毛衣', 't_family_id' => '200105', 't_orders' => NULL, 't_re' => NULL, ), ), '06' => array ( 'value' => array ( 't_id' => '4143', 't_name' => '卫衣', 't_family_id' => '200106', 't_orders' => NULL, 't_re' => NULL, ), ), '07' => array ( 'value' => array ( 't_id' => '4144', 't_name' => '羽绒服', 't_family_id' => '200107', 't_orders' => NULL, 't_re' => NULL, ), ), ), '02' => array ( 'value' => array ( 't_id' => '4103', 't_name' => '下装', 't_family_id' => '2002', 't_orders' => NULL, 't_re' => NULL, ), '01' => array ( 'value' => array ( 't_id' => '4145', 't_name' => '裤子', 't_family_id' => '200201', 't_orders' => NULL, 't_re' => NULL, ), ), ), '03' => array ( 'value' => array ( 't_id' => '4104', 't_name' => '配件', 't_family_id' => '2003', 't_orders' => NULL, 't_re' => NULL, ), '01' => array ( 'value' => array ( 't_id' => '4146', 't_name' => '男鞋', 't_family_id' => '200301', 't_orders' => NULL, 't_re' => NULL, ), ), '02' => array ( 'value' => array ( 't_id' => '4147', 't_name' => '运动鞋', 't_family_id' => '200302', 't_orders' => NULL, 't_re' => NULL, ), ), '03' => array ( 'value' => array ( 't_id' => '4148', 't_name' => '箱包票夹', 't_family_id' => '200303', 't_orders' => NULL, 't_re' => NULL, ), ), ), ),)?> 这样写,格式你自己控制function func($ar) { if(! is_array($ar)) return; foreach($ar as $key=>$item) { echo '<dl>'; foreach($item as $k=>$t) if($k == 'value') { echo "<dt>$key</dt>"; foreach($t as $v) echo "<dd>$v</dd>"; }else func($t); echo '</dl>'; }} 用这个navicat打开的时候,提示10060,无法远程连接,怎么回事啊 php怎么访问父级目录下的文件 独立ip的虚拟主机 <BUTTON class=button onclick="Run('file:///D:/GooglePinyinInstaller.exe')">QQ</BUTTON> 一个有趣的话题,网站到底能不能防小偷 如何将时间转成3/30/07格式? 这个生成中文的有意思: php怎么探测客户端操作系统是中文的还是非中文的? 请教PHP语句代码代表的意思 很急啊,能帮我理解这篇文章的意思吗? 奇怪的问题谁来答 mysql_num_rows($result)总是等于0,为什么?急急
这个代码有点“简单”看不懂
可以指点一下吗$r = array();
foreach($ar as $v) {
$p =& $r; ——————这个的功有是做什么哟?
foreach(str_split(array_shift($v), 2) as $k) {
if(! isset($p[$k])) $p[$k] = array();
$p =& $p[$k]; ————这个的功有是做什么哟,为什么要加&
}
$p['value'] = $v;
}print_r($r);唉,总之,上面的代码,我看懂一半,没有看懂一半。。可否指点一下呢?
$p =& $p[$k];
引用呀!设原串为 100201,切割后为 10 02 01 ,$r 为数组
则 $p 依次引用
$r
$r['10']
$r['10']['02']
$r['10']['02']['01']
特别是数组代&这样符号的,更是难理解以前在网上搜了些这方面的文档,感觉还是看懂了的,但是当在实际应用中,一遇到,又不会了。
$r = array();
foreach($ar as $v) {
$k = "r['" . join("']['", str_split(array_shift($v), 2)) ."']['value']";
eval("\$$k = \$v;");
}
生成的不是一个树状数组吗?function func($ar) {
foreach($ar as $k=>$v) {
if($k == 'value') {
// 输出本级的数据
}else {
func($v);
}
}
}
可以帮我看看问题在什么地方吗?别外,我还想问一个问题,我数据库里得到源数组,我用什么函数输出字符串来,人家拿着就可以用这个数组? public function func($arr,$count,$beforcount,$spList){
foreach($arr as $key => $val){
if( $key == 'value') {
if($count==1){
$html .= '<div class="right_nav" id="menu_'.$val["t_family_id"].'">';
} else if($count==2 ){
$html .= '<dt class="lef"><h1>'.$val["t_name"].'</h1></dt><dd>';
} else if( $count==3 ){
$html .= '<a href="">'.$val["t_name"].'</a>';
}
$spList = array_merge($spList, array($html));
array_shift($arr);
} else {
$beforcount = $count;
$count++;
$this->func($val,$count,$beforcount,$spList);
}
}
if(count($arr)==0){
$s_html = '';
foreach($spList as $key => $val){
$s_html = $s_html.$val;
}
echo "<pre>";print_r($spList);exit();
}
}
给你看看
<?php
array (
10 =>
array (
'value' =>
array (
't_id' => '4092',
't_name' => '女装',
't_family_id' => '10',
't_orders' => NULL,
't_re' => NULL,
),
'01' =>
array (
'value' =>
array (
't_id' => '4099',
't_name' => '上装',
't_family_id' => '1001',
't_orders' => NULL,
't_re' => NULL,
),
'01' =>
array (
'value' =>
array (
't_id' => '4123',
't_name' => 'T恤/卫衣',
't_family_id' => '100101',
't_orders' => NULL,
't_re' => NULL,
),
),
'02' =>
array (
'value' =>
array (
't_id' => '4124',
't_name' => '针织衫/毛衣',
't_family_id' => '100102',
't_orders' => NULL,
't_re' => NULL,
),
),
'03' =>
array (
'value' =>
array (
't_id' => '4125',
't_name' => '衬衫/雪纺衫',
't_family_id' => '100103',
't_orders' => NULL,
't_re' => NULL,
),
),
'04' =>
array (
'value' =>
array (
't_id' => '4126',
't_name' => '小西服/小外套',
't_family_id' => '100104',
't_orders' => NULL,
't_re' => NULL,
),
),
'05' =>
array (
'value' =>
array (
't_id' => '4127',
't_name' => '风衣/呢大衣',
't_family_id' => '100105',
't_orders' => NULL,
't_re' => NULL,
),
),
'06' =>
array (
'value' =>
array (
't_id' => '4128',
't_name' => '背心/吊带衫',
't_family_id' => '100106',
't_orders' => NULL,
't_re' => NULL,
),
),
'07' =>
array (
'value' =>
array (
't_id' => '4129',
't_name' => '马甲',
't_family_id' => '100107',
't_orders' => NULL,
't_re' => NULL,
),
),
'08' =>
array (
'value' =>
array (
't_id' => '4130',
't_name' => '棉衣/棉服',
't_family_id' => '100108',
't_orders' => NULL,
't_re' => NULL,
),
),
'09' =>
array (
'value' =>
array (
't_id' => '4131',
't_name' => '羽绒服',
't_family_id' => '100109',
't_orders' => NULL,
't_re' => NULL,
),
),
10 =>
array (
'value' =>
array (
't_id' => '4132',
't_name' => '皮衣/皮草',
't_family_id' => '100110',
't_orders' => NULL,
't_re' => NULL,
),
),
),
'02' =>
array (
'value' =>
array (
't_id' => '4100',
't_name' => '下装',
't_family_id' => '1002',
't_orders' => NULL,
't_re' => NULL,
),
'01' =>
array (
'value' =>
array (
't_id' => '4133',
't_name' => '裤子',
't_family_id' => '100201',
't_orders' => NULL,
't_re' => NULL,
),
),
'02' =>
array (
'value' =>
array (
't_id' => '4134',
't_name' => '牛仔裤',
't_family_id' => '100202',
't_orders' => NULL,
't_re' => NULL,
),
),
'03' =>
array (
'value' =>
array (
't_id' => '4135',
't_name' => '裤袜/丝袜/打底裤',
't_family_id' => '100203',
't_orders' => NULL,
't_re' => NULL,
),
),
),
'03' =>
array (
'value' =>
array (
't_id' => '4101',
't_name' => '裙',
't_family_id' => '1003',
't_orders' => NULL,
't_re' => NULL,
),
'01' =>
array (
'value' =>
array (
't_id' => '4136',
't_name' => '连衣裙',
't_family_id' => '100301',
't_orders' => NULL,
't_re' => NULL,
),
),
'02' =>
array (
'value' =>
array (
't_id' => '4137',
't_name' => '半身裙',
't_family_id' => '100302',
't_orders' => NULL,
't_re' => NULL,
),
),
),
),
20 =>
array (
'value' =>
array (
't_id' => '4093',
't_name' => '男装',
't_family_id' => '20',
't_orders' => NULL,
't_re' => NULL,
),
'01' =>
array (
'value' =>
array (
't_id' => '4102',
't_name' => '上装',
't_family_id' => '2001',
't_orders' => NULL,
't_re' => NULL,
),
'01' =>
array (
'value' =>
array (
't_id' => '4138',
't_name' => 'T恤',
't_family_id' => '200101',
't_orders' => NULL,
't_re' => NULL,
),
),
'02' =>
array (
'value' =>
array (
't_id' => '4139',
't_name' => '衬衫',
't_family_id' => '200102',
't_orders' => NULL,
't_re' => NULL,
),
),
'03' =>
array (
'value' =>
array (
't_id' => '4140',
't_name' => '外套',
't_family_id' => '200103',
't_orders' => NULL,
't_re' => NULL,
),
),
'04' =>
array (
'value' =>
array (
't_id' => '4141',
't_name' => 'POLO衫',
't_family_id' => '200104',
't_orders' => NULL,
't_re' => NULL,
),
),
'05' =>
array (
'value' =>
array (
't_id' => '4142',
't_name' => '针织衫/毛衣',
't_family_id' => '200105',
't_orders' => NULL,
't_re' => NULL,
),
),
'06' =>
array (
'value' =>
array (
't_id' => '4143',
't_name' => '卫衣',
't_family_id' => '200106',
't_orders' => NULL,
't_re' => NULL,
),
),
'07' =>
array (
'value' =>
array (
't_id' => '4144',
't_name' => '羽绒服',
't_family_id' => '200107',
't_orders' => NULL,
't_re' => NULL,
),
),
),
'02' =>
array (
'value' =>
array (
't_id' => '4103',
't_name' => '下装',
't_family_id' => '2002',
't_orders' => NULL,
't_re' => NULL,
),
'01' =>
array (
'value' =>
array (
't_id' => '4145',
't_name' => '裤子',
't_family_id' => '200201',
't_orders' => NULL,
't_re' => NULL,
),
),
),
'03' =>
array (
'value' =>
array (
't_id' => '4104',
't_name' => '配件',
't_family_id' => '2003',
't_orders' => NULL,
't_re' => NULL,
),
'01' =>
array (
'value' =>
array (
't_id' => '4146',
't_name' => '男鞋',
't_family_id' => '200301',
't_orders' => NULL,
't_re' => NULL,
),
),
'02' =>
array (
'value' =>
array (
't_id' => '4147',
't_name' => '运动鞋',
't_family_id' => '200302',
't_orders' => NULL,
't_re' => NULL,
),
),
'03' =>
array (
'value' =>
array (
't_id' => '4148',
't_name' => '箱包票夹',
't_family_id' => '200303',
't_orders' => NULL,
't_re' => NULL,
),
),
),
),
)
?>
function func($ar) {
if(! is_array($ar)) return;
foreach($ar as $key=>$item) {
echo '<dl>';
foreach($item as $k=>$t)
if($k == 'value') {
echo "<dt>$key</dt>";
foreach($t as $v) echo "<dd>$v</dd>";
}else func($t);
echo '</dl>';
}
}