请教多维数组的过滤的算法或思路:当子节点数据符合条件时,父节点输出标志无条件自动设置为符合条件,主要应用于多层次菜单。 "1"和"1.1"应该作为key而不是value,事情就好办得多了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么?1和1.1是标题,是用于显示的,可能有重复的。不重复的倒是有一个id。并,判断条件是status。目的是为了管理菜单中的连续性,比如,我具有菜单项A下的子菜单项B的权限,但我不具有A的权限,在显示树形菜单的时候,必须让A也显示出来,B才能显示。 递归遍历的思路有些混乱,能否再帮忙点拨?$t = array( 0 => array( title => '1', status => 0, child => array( title => '1.1', status => 1, ) ));function r( $t ){ foreach( $t as $k => $v ){ if ( $v[ 'status' ] == 1 ) print $v[ 'title' ]; /* * 疑问,采用遍历,这是不知道子节点的数据情况,假如本级数据status为0,那么就无法判断 */ if ( $v[ 'child' ] ) r( $v[ 'child' ] ); }}r( $t );===================================================或,除非分两步,先遍历数组,增加一个动态的数组键。但,这有个效率的问题。function r2( $t ){ foreach( $t as $k => $v ){ if ( $v[ 'status' ] == 1 ) // 这里如何设置当前数组单元的ok键为1? $v[ 'ok' ] == 1; /* * 疑问,在这个地方需要,这里如何向上遍历,将所有上级节点ok设置为1? */ if ( $v[ 'child' ] ) r2( $v[ 'child' ] ); }}print_r ( r2( $t ) ); 如果按你的说法,1和1.1是不可能重复的,你自己再想想这个问题和无级分类是一样的道理,用parent的方法你就必须递归还好1和1.1可以通过“.”来拆分判断是否从属关系 谢谢你的关注,可能是我叙述的不够准确。1和1.1是表示标题,而不是id路径,标题是可能存在重复的。xuzuning(唠叨) 在我的另一个帖子里给里一个相对较好的思路。http://community.csdn.net/Expert/topic/4938/4938090.xml?temp=.8629572 不选择图片也会输出 怎么删除一段字符串里面,除了数字,其他都删除 PennyCMS网站内容管理系统 php文件上传时,支持我输入的网址么? 请教关于邮件 require的问题 请问如何配置好一个iis 和 php 的环境?请赐教 netBook补丁 各位老兄有没有考虑一个程序员以后的发展方向?大家来设计设计!这是每个程序员必须考虑的。 ecshop发送邮件链接问题 关于注入问题 请问在php5里,GET/POST过去的参数,在页面中如何拿到
1和1.1是标题,是用于显示的,可能有重复的。
不重复的倒是有一个id。
并,判断条件是status。目的是为了管理菜单中的连续性,比如,我具有菜单项A下的子菜单项B的权限,但我不具有A的权限,在显示树形菜单的时候,必须让A也显示出来,B才能显示。
$t = array(
0 => array(
title => '1',
status => 0,
child => array(
title => '1.1',
status => 1,
)
)
);function r( $t ){
foreach( $t as $k => $v ){
if ( $v[ 'status' ] == 1 )
print $v[ 'title' ];
/*
* 疑问,采用遍历,这是不知道子节点的数据情况,假如本级数据status为0,那么就无法判断
*/
if ( $v[ 'child' ] )
r( $v[ 'child' ] );
}
}
r( $t );===================================================
或,除非分两步,先遍历数组,增加一个动态的数组键。
但,这有个效率的问题。
function r2( $t ){
foreach( $t as $k => $v ){
if ( $v[ 'status' ] == 1 )
// 这里如何设置当前数组单元的ok键为1?
$v[ 'ok' ] == 1;
/*
* 疑问,在这个地方需要,这里如何向上遍历,将所有上级节点ok设置为1?
*/
if ( $v[ 'child' ] )
r2( $v[ 'child' ] );
}
}print_r ( r2( $t ) );
还好1和1.1可以通过“.”来拆分判断是否从属关系
1和1.1是表示标题,而不是id路径,标题是可能存在重复的。xuzuning(唠叨) 在我的另一个帖子里给里一个相对较好的思路。
http://community.csdn.net/Expert/topic/4938/4938090.xml?temp=.8629572