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
PHP读写文件的方法(生成HTML)
Nov 27 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 PHP
浅谈discuz密码加密的方式
May 22 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
php自动获取关键字的方法
Jan 06 PHP
如何实现php图片等比例缩放
Jul 28 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
教你php如何实现验证码
Jan 20 PHP
关于PHP中Session文件过多的问题及session文件保存位置
Mar 17 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 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
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
Python中的自省(反射)详解
2015/06/02 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
前台岗位职责
2015/02/13 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
Python实现机器学习算法的分类
2021/06/03 Python
2022微信温控新功能上线
2022/05/09 数码科技