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 Ajax中文乱码问题解决方法
Feb 27 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
php格式化时间戳
Dec 17 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
PHP实时统计中文字数和区别
Feb 28 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
php实现推荐功能的简单实例
Sep 29 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 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
PHP 引用是个坏习惯
2010/03/12 PHP
php自定义apk安装包实例
2014/10/20 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
JS常用知识点整理
2017/01/21 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
Python3实现连接SQLite数据库的方法
2014/08/23 Python
Python模拟登陆实现代码
2017/06/14 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python中的默认参数实例分析
2018/01/29 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
通过cmd进入python的步骤
2020/06/16 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
康拓普公司Java笔面试
2016/09/23 面试题
90后毕业生的求职信范文
2013/09/21 职场文书
师范大学应届生求职信
2013/11/21 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
质量保证书
2015/01/17 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
教你怎么用Python监控愉客行车程
2021/04/29 Python
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
MySQL 逻辑备份 into outfile
2022/05/15 MySQL