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 相关文章推荐
追求程序速度,而不是编程的速度
Apr 23 PHP
PHP url 加密解密函数代码
Aug 26 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
PHP原生函数一定好吗?
Dec 08 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
php返回当前日期或者指定日期是周几
May 21 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
Laravel框架实现的rbac权限管理操作示例
Jan 16 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php 函数中使用static的说明
2012/06/01 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
2014/03/08 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
python一键升级所有pip package的方法
2017/01/16 Python
python日志记录模块实例及改进
2017/02/12 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
python+tkinter实现学生管理系统
2019/08/20 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
端午节演讲稿
2014/05/23 职场文书
职业规划实施方案
2014/06/10 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
员工手册编写范本
2015/05/14 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
2016年寒假生活小结
2015/10/10 职场文书