PHP:递归删除多维数组中的 Null 和空值


php:递归删除多维数组中的 null 和空值

本文介绍了如何在 PHP 中递归地从多维数组中删除 `null` 和空字符串值,同时保留值为 0 的元素。通过示例代码和详细解释,帮助开发者理解如何正确地处理多维数组,避免常见错误,并提供了一种高效的解决方案。

在 PHP 开发中,处理多维数组是很常见的任务。有时我们需要清理数组,移除其中不需要的 null 值或者空字符串,但又要保留有意义的零值。本文将提供一种递归方法,以实现此目的。

递归函数实现

以下是一个用于递归删除多维数组中 null 和空字符串值的 PHP 函数:

<?php

class ArrayHelper {

    /**
     * 递归地从多维数组中删除 null 和空字符串值,保留 0 值。
     *
     * @param array $data 待处理的数组 (注意:使用引用传递)
     * @return array 处理后的数组
     */
    public function cleanArray(array &$data): array
    {
        foreach ($data as $key => &$value) {
            if (is_array($value)) {
                // 递归调用自身来处理子数组
                $this->cleanArray($value);
                // 删除为空的子数组
                if (empty($value)) {
                    unset($data[$key]);
                }
            } elseif ($value === null || $value === '') {
                // 删除 null 或空字符串值
                unset($data[$key]);
            }
        }
        return $data;
    }
}

// 示例用法
$dataPayment = [
    "operationType" => null,
    "terminal" => 12345,
    "payment" => [
        "terminal" => 12345,
        "order" => "1234519997",
        "amount" => 100,
        "currency" => "EUR",
        "secure" => 0,
        "idUser" => 123456789,
        "tokenUser" => "zidkeKeu68Kld",
        "urlOk" => null,
        "urlKo" => null,
        "originalIp" => "1.130.151.28",
        "methodId" => 1,
        "trxType" => "N",
        "userInteraction" => 1,
        "scaException" => "MIT"
    ],
    "subscription" => [
        "startDate" => null,
        "endDate" => null
    ]
];

$helper = new ArrayHelper();
$cleanedArray = $helper->cleanArray($dataPayment);

print_r($cleanedArray);
?>

代码解释:

ViiTor AI ViiTor AI

一个强大的多语言AI语音合成和视频转译平台

ViiTor AI 9414 查看详情 ViiTor AI
  1. cleanArray(array &$data) 函数: 接受一个数组作为参数,并且使用引用传递 (&$data)。 这是至关重要的,因为它允许函数直接修改原始数组。
  2. foreach 循环: 遍历数组中的每一个元素。
  3. is_array($value) 检查: 如果当前元素是一个数组,则递归调用 cleanArray() 函数来处理该子数组。
  4. $value === null || $value === '' 检查: 如果当前元素的值是 null 或者空字符串,则使用 unset() 函数删除该元素。
  5. empty($value) 检查: 在递归调用返回后,检查子数组是否为空。如果为空,则从父数组中删除该子数组。

输出结果:

Array
(
    [terminal] => 12345
    [payment] => Array
        (
            [terminal] => 12345
            [order] => 1234519997
            [amount] => 100
            [currency] => EUR
            [secure] => 0
            [idUser] => 123456789
            [tokenUser] => zidkeKeu68Kld
            [originalIp] => 1.130.151.28
            [methodId] => 1
            [trxType] => N
            [userInteraction] => 1
            [scaException] => MIT
        )
)

注意事项

  • 引用传递: 使用引用传递 (&$data) 是关键。 如果没有使用引用,unset() 函数将只会修改函数内部的数组副本,而不会影响原始数组。
  • 类型严格比较: 使用 === 进行类型严格比较,以确保只有 null 值和空字符串被删除,而数值 0 不会被删除。
  • 递归深度: 对于非常深的多维数组,递归可能会导致性能问题或者达到 PHP 的最大递归深度限制。 在处理大型数组时,需要注意这一点,并考虑使用迭代方法来替代递归。
  • empty() 函数: 确保在递归返回后检查子数组是否为空,并删除空数组。

总结

通过使用递归和引用传递,我们可以有效地从 PHP 多维数组中删除 null 和空字符串值,同时保留有意义的零值。 这种方法可以帮助清理数据,提高代码的可读性和可维护性。 在实际应用中,请根据数组的结构和大小,合理选择处理方法,并注意性能优化。

以上就是PHP:递归删除多维数组中的 Null 和空值的详细内容,更多请关注php中文网其它相关文章!


# 空字符串  # 免费seo的网站推广  # 山阳网站优化公司有哪些  # a扩大产品组合策略b网站推广  # 松茸网络营销推广方案  # 河北网站建设备案价格  # 热狗网站优化外包  # 苏州网站建设与管理平台  # 嵩明新营销模式推广优质商家  # 蜗牛seo博客推广产品  # 寿光seo品牌  # 这是  # php  # 怎么看  # 有意义  # 是一个  # 字符串值  # 为空  # 组中  # 多维  # 递归  # php 函数  # 递归函数 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: Sublime怎么格式化HTML代码_Sublime前端代码美化插件使用指南  Win10如何关闭操作中心通知 Win10免打扰设置全攻略【清爽】  《幻兽帕鲁》手游帕鲁捕捉技巧分享  《土豆雅思》修改密码方法  汽水音乐网页端访问 汽水音乐官方网页直达  鸣潮历史学家灯塔位置一览  斯宾塞称XGP云游戏“蒸蒸日上”:正在构建一个游戏从未如此唾手可得的未来  铁路12306官网入口 铁路12306中国铁路官网登录首页  苹果手机手电筒无法开启  电脑“无法访问指定设备、路径或文件”怎么办?五种权限设置方法  知乎APP怎么查看自己被邀请的问题_知乎APP邀请回答记录查看与参与方法  使用Selenium在无头Chrome中交互动态菜单和复选框的策略  汽水音乐车机版 汽水音乐车机版官方入口  AO3中文版手机快速通道_AO3最新稳定链接更新  mysql归档数据怎么导出为csv_mysql归档数据导出为csv文件的方法  智学网成绩单查询系统网_智学网学生平台登录  XPath动态元素定位:如何精准选择文本内容变化的元素  C++如何将字符串转换为大写或小写_C++ transform函数的使用技巧  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  被称为海蜈蚣的海洋动物是  Google Drive API 认证:服务账户与OAuth 2.0的选择与实践  Win10如何查看已安装的更新补丁 Win10卸载指定更新教程【教程】  FullCalendar自定义按钮样式定制指南  解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用  睡觉时心跳快是什么原因 夜间心悸如何应对  windows server2019显卡驱动怎么安装_winserver2019显卡驱动安装与远程桌面优化  《微信》视频号原创声明开启方法  国际经济与贸易就业方向解析  蛙漫2(台版)正版官网 2025免费网页版分享  HTML与J*aScript实现下拉菜单驱动的动态表格:构建交互式维修表单  泰拉瑞亚网页版在线登录入口 泰拉瑞亚官方正版入口  J*aScript桌面应用_Electron多进程架构实战  cad加载的线型看不见怎么办_cad线型不可见问题解决方法  263企业邮箱如何设置邮件转发功能  CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程  如何查找哪个composer包引入了特定的依赖?  使用VS Code调试Python代码:从入门到精通  Sublime怎么配置YAML文件格式化_Sublime YAML Formatter插件教程  顺丰速运官网查询入口 顺丰物流查询官网入口链接  钉钉任务无法提醒如何处理 钉钉任务提醒优化方法  Golang如何使用gRPC拦截器实现日志收集_Golang gRPC拦截器日志收集实践  windows10怎么开启wsl_windows10安装linux子系统教程  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  PSD转AI文件的简单方法  驱动人生:游戏修复指南  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩  c++如何链接Boost库_c++准标准库的集成与使用  j*a中ArrayBlockingQueue的使用  《下一站江湖2》武器获取方法 

 2025-11-03

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.