这篇文章主要介绍了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的laravel框架中使用adminlte模板来编写网站后台界面_php技巧
php获取文件后缀的9种方法_php技巧
php实现补齐关闭的html标签_php技巧
以上就是php实现递归删除多维数组中的某个值的详细内容。