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 zend 相对路径问题
Jan 12 PHP
PHP技术开发技巧分享
Mar 23 PHP
php 获取全局变量的代码
Apr 21 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
smarty表格换行实例
Dec 15 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 PHP
PHP中Trait及其应用详解
Feb 14 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
Oct 17 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
域名查询代码公布
2006/10/09 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
WAF的正确bypass
2017/01/05 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
介绍一下.net和Java的特点和区别
2012/09/26 面试题
《大作家的小老师》教学反思
2014/04/16 职场文书
大学辅导员述职报告
2015/01/10 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
五年级作文之成长
2019/09/16 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript