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&&mysql)一
Oct 09 PHP
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
php eval函数一句话木马代码
May 21 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
TP5框架实现上传多张图片的方法分析
Mar 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 循环列出目录内容的函数代码
2010/05/26 PHP
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python类继承用法实例分析
2015/05/27 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python format 格式化输出方法
2018/07/16 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
自荐信格式技巧有哪些呢
2013/11/19 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
学校四群教育实施方案
2014/06/12 职场文书
教师工作决心书
2015/02/04 职场文书
小学三年级作文之写景
2019/11/05 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
Java获取字符串编码格式实现思路
2022/09/23 Java/Android