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将数据库导出成excel的方法
May 07 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
Jun 05 PHP
深入php中var_dump方法的使用详解
Jun 24 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
PHP比你想象的好得多
Nov 27 PHP
php需登录的文件上传管理系统
Mar 21 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
PHP常用的三种设计模式
Feb 17 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 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
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
php获取淘宝分类id示例
2014/01/16 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
js如何改变文章的字体大小
2016/01/08 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
python动态加载变量示例分享
2014/02/17 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
2018/04/19 Python
python邮件发送smtplib使用详解
2020/06/16 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
python中Lambda表达式详解
2019/11/20 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
大学自我鉴定
2013/12/20 职场文书
抄作业检讨书
2014/02/17 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
触电现场处置方案
2014/05/14 职场文书
质量承诺书怎么写
2014/05/24 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
行政撤诉申请书
2015/05/18 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
保护动物的宣传语
2015/07/13 职场文书