PHP-用递归的方式删除PHP数组

发布于 2016-11-11 22:01:14 字数 2024 浏览 1283 评论 1

数组如下
<?php
$sort_arr2=array (
0 =>
array (
'id' => '11',
'fid' => '8',
'name' => '2-2级',
'orderby' => '0',
'hidden' => '0',
),
1 =>
array (
'id' => '4',
'fid' => '0',
'name' => '1级',
'orderby' => '0',
'hidden' => '0',
),
2 =>
array (
'id' => '8',
'fid' => '0',
'name' => '2级',
'orderby' => '0',
'hidden' => '0',
),
3 =>
array (
'id' => '5',
'fid' => '4',
'name' => '1-2级',
'orderby' => '0',
'hidden' => '0',
),
4 =>
array (
'id' => '10',
'fid' => '8',
'name' => '2-1级',
'orderby' => '0',
'hidden' => '0',
),
5 =>
array (
'id' => '12',
'fid' => '10',
'name' => '2-1-1级',
'orderby' => '0',
'hidden' => '0',
),
)
?>
这个是个分类的数组,对应关系为id fid
└1级
└1-2级
└2级
└2-2级
└2-1级
└2-1-1级

我想删除指定的数组或者删除某个数组及其分类,所以写了个函数使用递归的方法,但是3级的还是删除不了,本人实在不知道怎么写了
function class_dell($tarray='',$id='')
{

if ( is_array($tarray) && count($tarray)>0 ) {

foreach($tarray as $key=>$v){

if ($id===$v['id']) {
unset ($tarray[$key]);
}

if ($id===$v['fid']) {

unset ($tarray[$key]);

$tarray=class_dell($tarray,$id=$v['id']) ;

}

}

}

return $tarray;
}

$l=array();
$l=class_dell($sort_arr2,$id='8');
print_r ($l);
求经验,求代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想挽留 2017-01-21 19:10:33

这个问题今天晚上加班解决了,原因是自己的程序在参数传递矛盾了,
虽然解决了,但是还要谢谢大家

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文