您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

如何查找指定键的路径

2024/7/1 7:14:59发布35次查看
想要在一个有特定规律的数组中查找一个键的路径 比如以下代码 要查找 红富士的键  返回一个包括它父级路径的数组  array(2, 3, 5, 9)
高手帮个忙  谢谢了   我研究一大天了  没有搞定
$array = array( 1=>array( name=>粮油 ), 2=>array( name=>果蔬, chlids=>array( 3=>array( name=>水果, chlids=>array( 5=>array( name=>苹果, childs=>array( 8=>array( name=>青苹果, ), 9=>array( name=>红富士, ) ) ), 6=>array( name=>橘子 ), 7=>array( name=>大鸭梨 ) ) ), 4=>array( name=>蔬菜, chlids=>array( 3=>array( name=>白菜 ), 3=>array( name=>芹菜 ) ) ), ) ) );
回复讨论(解决方案) $r = find($array, '红富士');print_r($r);function find($ar, $name='') { $res = array(); foreach($ar as $k=>$v) { if($v['name'] == $name) $res[] = $k; elseif(isset($v['childs']) && ! $res) { $res = find($v['childs'], $name); if($res) array_unshift($res, $k); } } return $res;}

array
(
[0] => 2
[1] => 3
[2] => 5
[3] => 9
)
另外请注意:你的部分 childs 键名写错了,写成了 chlids
$r = find($array, '红富士');print_r($r);function find($ar, $name='') { $res = array(); foreach($ar as $k=>$v) { if($v['name'] == $name) $res[] = $k; elseif(isset($v['childs']) && ! $res) { $res = find($v['childs'], $name); if($res) array_unshift($res, $k); } } return $res;}

array
(
    [0] => 2
    [1] => 3
    [2] => 5
    [3] => 9
)
另外请注意:你的部分 childs 键名写错了,写成了 chlids
还在吗?我的问题有点错误,是查找红富士的键 也就是9   然后返回这个结果  这个结果是对的
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product