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 相关文章推荐
VFP与其他应用程序的集成
Oct 09 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
php使用指定字符列表生成随机字符串的方法
Apr 18 PHP
PHP使用递归生成文章树
Apr 21 PHP
开启PHP Static 关键字之旅模式
Nov 13 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
PHP使用非对称加密算法RSA
Apr 21 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 echo 输出字符串函数详解
2010/05/13 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
教师远程培训感言
2014/03/06 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
大学生村官承诺书
2014/03/28 职场文书
小学运动会加油稿
2015/07/22 职场文书
公司酒会致辞
2015/07/30 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python