PHP递归删除多维数组中的某个值
今天在做业务逻辑的过程中,需要在一个不确定的多维数组中删除某个特定的key,查了挺长时间加上自己的修改,终于满足了业务逻辑,该方法在修改后应该可以适用于很多地方,所以记录下来以备后用,我这里是一个多维数组,还是json_encode后的,主要目的是删除所有old_tags_id数组中有tag_id=264的数据,顺便要删除相应的tag_name,还有addtag要减1,,代码如下:
先放递归函数,当然这里是核心,很多人看了这个应该就已经知道如何使用了.
publicfunctiondealMenuTagDelete(&$menuData,$tag_id)
{
if(!is_array($menuData)){
returnfalse;
}
foreach($menuDataas$key=>$val){
if($key==='old_tags_id'){
foreach($valas$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综合分析\"",
"testaddatag"
],
"old_tags_id":[
"264",
"17"
],
"new_tags_id":[],
"tit":"1"
},
"zizicd2":{
"typ":"res_wb",
"data":"wwww",
"addtag":1,
"old_tags":[
"testaddatag"
],
"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引号阅读usermessage图文”"
],
"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\":\"你属于conversation80这一组\"},{\"segId\":\"450\",\"message_type\":\"1\",\"val\":\"poll-1212\\n有三个人,rainbowHT_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递归删除多维数组中的某个值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!