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


Posted in PHP onApril 17, 2017

今天在做业务逻辑的过程中,需要在一个不确定的多维数组中删除某个特定的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递归删除多维数组中的某个值,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
用PHP读注册表
Oct 09 PHP
动易数据转成dedecms的php程序
Apr 07 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
php 动态多文件上传
Jan 18 PHP
mysql总结之explain
Feb 27 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
php中使用websocket详解
Sep 23 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 #PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 #PHP
PHP中快速生成随机密码的几种方式
Apr 17 #PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 #PHP
关于php 高并发解决的一点思路
Apr 16 #PHP
PHP无限极分类函数的实现方法详解
Apr 15 #PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 #PHP
You might like
ThinkPHP的URL重写问题
2014/06/22 PHP
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
Python操作json数据的一个简单例子
2014/04/17 Python
python提示No module named images的解决方法
2014/09/29 Python
Python模拟登录12306的方法
2014/12/30 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
体育学院毕业生自荐信
2013/11/03 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
自强之星事迹材料
2014/05/12 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS