php递归删除,PHP递归删除多维数组中的某个值

今天在做业务逻辑的过程中,需要在一个不确定的多维数组中删除某个特定的key,查了挺长时间加上自己的修改,终于满足了业务逻辑,该方法在修改后应该可以适用于很多地方,所以记录下来以备后用,我这里是一个多维数组,还是json_encode后的,主要目的是删除所有old_tags_id数组中有tag_id=264的数据,顺便要删除相应的tag_name,还有 addtag要减1,,代码如下:

先放递归函数,当然这里是核心,很多人看了这个应该就已经知道如何使用了.

public function dealMenuTagDelete(&$menuData, $tag_id)

{

if (!is_array($menuData)) {

return false;

}

foreach ($menuData as $key => $val) {

if ($key === 'old_tags_id') {

foreach ($val as $tagKey => $tagVaule) {

if ($tagVaule == $tag_id) {

unset($menuData['old_tags_id'][$tagKey]);

unset($menuData['old_tags'][$tagKey]);

$menuData['addtag']--;

}

}

}

if (is_array($val)) {

self::dealMenuTagDelete($menuData[$key], $tag_id);

}

}

return $menuData;

}

维数组长这样,还是jeson_encode后的格式:

[ {

"typ": "res_ejcd",

"tit": "message1",

"data": "1@2@3",

"subdata": {

"zizicd1": {

"typ": "res_wb",

"data": "qqqq",

"addtag": 1,

"old_tags": [

"\"campaign综合分析\"",

"test add a tag"

],

"old_tags_id": [

"264",

"17"

],

"new_tags_id": [],

"tit": "1"

},

"zizicd2": {

"typ": "res_wb",

"data": "wwww",

"addtag": 1,

"old_tags": [

"test add a tag"

],

"old_tags_id": [

"17"

],

"new_tags_id": [],

"tit": "2"

},

"zizicd3": {

"typ": "res_wb",

"data": "ddd",

"addtag": 1,

"old_tags": [],

"old_tags_id": [],

"new_tags_id": [

"new_tag1"

],

"tit": "3"

}

},

"addtag": 0,

"old_tags": [],

"old_tags_id": [],

"new_tags_id": []

},

{

"typ": "res_tw",

"tit": "Post",

"data": "2121",

"subdata": null,

"addtag": 1,

"old_tags": [

"“519引号阅读user message图文”"

],

"old_tags_id": [

"183"

],

"new_tags_id": []

},

{

"typ": "res_wb",

"tit": "Today1",

"data": "12312321",

"subdata": null,

"addtag": 1,

"old_tags": [],

"old_tags_id": [],

"dynamicdata": "{\"default\":{\"message_type\":\"1\",\"val\":\"dynamic\"},\"segementation\":[{\"segId\":\"451\",\"message_type\":\"1\",\"val\":\"你属于conversation 80这一组\"},{\"segId\":\"450\",\"message_type\":\"1\",\"val\":\"poll-1212\\n有三个人,rainbow H T_T\"}]}",

"configId": "2392",

"new_tags_id": [

"new_tag2"

]

}

]

然后赋值,调用

$tag_id = 264;

$menuData = json_decode($data,true);//这里第二个参数用true就会转化为数组了

self::dealMenuTagDelete($menuData,$tag_id);

print_r($menuData);

以上所述是小编给大家介绍的PHP递归删除多维数组中的某个值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值