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递归删除多维数组中的某个值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!