php数组查询并删除,php – 递归搜索并删除数组?

我正在使用多维数组,我希望能够删除与id匹配的数组(和所有子项).

我试过的功能是:

function removeKey($key, $array, $childKey = 'children'){

if(isset($array[$key])){

unset($array[$key]);

return $array;

}

foreach($array as &$item)

if(isset($item[$childKey]))

$item = removeKey($key, $item[$childKey], $childKey);

return $array;

}

我的示例数组是:

Array

(

[5] => Array

(

[id] => 5

[parent_id] =>

[menu_title] => Drinks

[page_title] => Drinks

[status] => 1

[products] => 0

)

[1] => Array

(

[id] => 1

[parent_id] =>

[menu_title] => Electronics

[page_title] => Electronics

[status] => 1

[products] => 0

[children] => Array

(

[2] => Array

(

[id] => 2

[parent_id] => 1

[menu_title] => Computers

[page_title] => Computers

[status] => 1

[products] => 0

[children] => Array

(

[4] => Array

(

[id] => 4

[parent_id] => 2

[menu_title] => Apple

[page_title] => Apple - Imacs and Macbooks

[status] => 1

[products] => 0

)

)

)

[3] => Array

(

[id] => 3

[parent_id] => 1

[menu_title] => Mobile Phones

[page_title] => Mobile Phones

[status] => 1

[products] => 0

)

)

)

)

我正在寻找的结果(用(2,$array,’children’)调用函数)是:

Array

(

[5] => Array

(

[id] => 5

[parent_id] =>

[menu_title] => Drinks

[page_title] => Drinks

[status] => 1

[products] => 0

)

[1] => Array

(

[id] => 1

[parent_id] =>

[menu_title] => Electronics

[page_title] => Electronics

[status] => 1

[products] => 0

[children] => Array

(

[3] => Array

(

[id] => 3

[parent_id] => 1

[menu_title] => Mobile Phones

[page_title] => Mobile Phones

[status] => 1

[products] => 0

)

)

)

)

但我得到的结果是

Array

(

[5] => Array

(

[id] => 5

[parent_id] =>

[menu_title] => Drinks

[page_title] => Drinks

[status] => 1

[products] => 0

)

[1] => Array

(

[3] => Array

(

[id] => 3

[parent_id] => 1

[menu_title] => Mobile Phones

[page_title] => Mobile Phones

[status] => 1

[products] => 0

)

)

)

我不知道这里发生了什么!

最佳答案 您只需使用引用即可轻松完成任务.

function removeKey($key, &$array, $childKey = 'children'){

if(isset($array[$key])){

unset($array[$key]);

return;

}

foreach($array as &$item)

if(isset($item[$childKey]))

removeKey($key, $item[$childKey], $childKey);

}

例:

$arr = array(...);

removeKey('key', $arr, $chilKey);

// Just continue using $arr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值