今天在做业务逻辑的过程中,需要在一个不确定的多维数组中删除某个特定的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递归删除多维数组中的某个值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。