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 相关文章推荐
elgg 获取文件图标地址的方法
Mar 20 PHP
PHP 一个比较完善的简单文件上传
Mar 25 PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 PHP
php和javascript之间变量的传递实现代码
Dec 19 PHP
解析php如何将日志写进syslog
Jun 28 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
Apr 09 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
Aug 11 PHP
PHP sdk实现在线打包代码示例
Dec 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
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
javascript编码的几个方法详细介绍
2013/01/06 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python中的编码知识整理汇总
2016/01/26 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python SQLite3简介
2018/02/22 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
Python封装原理与实现方法详解
2018/08/28 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
python 实现二维列表转置
2019/12/02 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
python两种注释用法的示例
2020/10/09 Python
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
少先队入队活动方案
2014/02/08 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
合伙经营协议书
2014/04/18 职场文书
企业文化口号
2014/06/12 职场文书
公司庆典欢迎词
2015/01/26 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS