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
php smarty模版引擎中变量操作符及使用方法
Dec 11 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
关于php循环跳出的问题
Jul 01 PHP
PHP实现获取域名的方法小结
Nov 05 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
php提交表单发送邮件的方法
Mar 20 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 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
我的群发邮件程序
2006/10/09 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
php微信开发自定义菜单
2016/08/27 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python对象及面向对象技术详解
2016/07/19 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Python collections模块使用方法详解
2019/08/28 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
音乐表演专业毕业生求职信
2013/10/14 职场文书
驾驶员岗位职责
2014/01/29 职场文书
竞聘书格式及范文
2014/03/31 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
雨花台导游词
2015/02/06 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书