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 相关文章推荐
域名查询代码公布
Oct 09 PHP
用文本文件制作留言板提示(下)
Oct 09 PHP
让PHP支持页面回退的两种方法[转]
Feb 14 PHP
PHP 可阅读随机字符串代码
May 26 PHP
php正则表达式(regar expression)
Sep 10 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
php文件缓存类汇总
Nov 21 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
php实现复制移动文件的方法
Jul 29 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 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实现验证码功能
2006/10/09 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
Webpack的dll功能使用
2018/06/28 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
python调用tcpdump抓包过滤的方法
2018/07/18 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
基于python实现高速视频传输程序
2019/05/05 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
Python使用openpyxl复制整张sheet
2021/03/24 Python
土木工程专业个人求职信
2013/12/05 职场文书
高中生学习的自我评价
2013/12/14 职场文书
5s推行计划书
2014/05/06 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
小学生交通安全寄语
2015/02/27 职场文书
防溺水主题班会教案
2015/08/12 职场文书
alibaba seata服务端具体实现
2022/02/24 Java/Android