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执行速度全攻略(上)
Oct 09 PHP
PHP中simplexml_load_string函数使用说明
Jan 01 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
基于Zend的Captcha机制的应用
May 02 PHP
基于php下载文件的详解
Jun 02 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
PHP小技巧之函数重载
Jun 02 PHP
php实现递归抓取网页类实例
Apr 03 PHP
深入分析PHP优化及注意事项
Jul 04 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
php使用PDO执行SQL语句的方法分析
Feb 16 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 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/01/26 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
php接口隔离原则实例分析
2019/11/11 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
python实现web方式logview的方法
2015/08/10 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
python3 map函数和filter函数详解
2019/08/26 Python
使用Python实现画一个中国地图
2019/11/23 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
高中的自我鉴定
2013/12/16 职场文书
联欢晚会主持词
2014/03/25 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python