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一些错误处理的方法与技巧总结
Aug 10 PHP
php获取字段名示例分享
Mar 03 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
Dec 24 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
PHP实现的简单异常处理类示例
May 04 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 PHP
php array_map()函数实例用法
Mar 03 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
php Calender(日历)代码分享
2014/01/03 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
php和asp语法上的区别总结
2019/05/12 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
vue setInterval 定时器失效的解决方式
2020/07/30 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
python time模块用法实例详解
2014/09/11 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
python设置环境变量的原因和方法
2019/06/24 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
python中sys模块是做什么用的
2020/08/16 Python
python+requests接口自动化框架的实现
2020/08/31 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
致长跑运动员加油稿
2014/02/20 职场文书
医院科室评语
2015/01/04 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
2015入党自传格式范文
2015/06/26 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers