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学习教程之第1天
Jun 15 PHP
php 安全过滤函数代码
May 07 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
初识laravel5
Mar 02 PHP
为百度UE编辑器上传图片添加水印功能
Apr 16 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
Yii 实现数据加密和解密
Mar 09 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
Python能做什么
2020/06/02 Python
什么是方法的重载
2013/06/24 面试题
《灯光》教学反思
2014/02/08 职场文书
模范家庭事迹材料
2014/02/10 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
企业承诺书格式
2014/05/21 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
股东授权委托书范文
2014/09/13 职场文书
学校开学标语
2014/10/06 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技