新闻中心
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 (empt
y($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);
?>代码解释:
Musho
AI网页设计Figma插件
76
查看详情
- cleanArray(array &$data) 函数: 接受一个数组作为参数,并且使用引用传递 (&$data)。 这是至关重要的,因为它允许函数直接修改原始数组。
- foreach 循环: 遍历数组中的每一个元素。
- is_array($value) 检查: 如果当前元素是一个数组,则递归调用 cleanArray() 函数来处理该子数组。
- $value === null || $value === '' 检查: 如果当前元素的值是 null 或者空字符串,则使用 unset() 函数删除该元素。
- 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中文网其它相关文章!
# 递归函数
# php 函数
# 递归
# 多维
# 组中
# 为空
# 字符串值
# php
# 吉林抖音seo技巧分析
# 塔城高级网站建设设计
# 舍得酒营销推广
# 新媒体营销b站推广
# 李夜seo
# 青海seo哪家效果好
# giang seo phan
# seo所说的蜘蛛是什么
# 阜新大连网站建设
# 坦洲seo推广费用
# 转换为
# 有意义
# 自定义
# 做一个
# 是一个
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】
在J*a中如何使用Stream.map转换元素_Stream映射操作解析
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
谷歌google账号注册详细步骤 谷歌账号注册官方教程
邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策
从J*aScript对象中精确提取指定属性的教程
Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法
b站如何看历史记录_b站观看历史找回方法
TikTok网页版直接登录 TikTok网页端官方平台入口
Go语言中JSON数据解析与字段访问教程
在Typer应用中优雅地处理和重组任意命令行参数
qq音乐在线播放入口_qq音乐电脑版登录链接
mcjs网页版在线存档 mcjs云存档登录入口
C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
蛙漫2台版漫画地址 Manwa2正版网页版链接
Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】
在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明
Golang如何使用net/url解析URL_Golang URL解析与处理方法
手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析
快手极速版在线观看 官方网页版登录地址
html5 app怎么运行环境_配html5 app运行环境【教程】
2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南
J*aScript异步迭代器_j*ascript异步遍历
win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】
使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战
海棠账号登录入口_登录海棠账户同步阅读记录
R星幕后开发视频泄露 包含《GTA6》等多款大作
uc浏览器网页版入口 uc浏览器网页版最新网址
TypeScript/J*aScript:高效查找数组中首个唯一ID对象
红果短剧网页版官网入口 官方最新网址发布
163邮箱注册官网 免费申请163个人邮箱
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
大麦的“候补”是什么意思 大麦候补购票规则【详解】
生成rdflib自定义SPARQL函数:参数匹配与实践指南
Selenium Python中处理点击后新窗口加载冻结问题的策略与实践
Composer中的^和~符号代表什么_精通Composer版本号语义化约束
GemBox Document HTML转PDF垂直文本渲染问题及解决方案
圆通快递查询实时追踪 圆通物流包裹状态快速查看
蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址
必由学官网首页入口 必由学教师网页版登录指南
Pyrogram与g4f集成:异步编程实践与常见错误解决
蛙漫移动版在线看 蛙漫手机浏览器直达入口
铁路12306的积分有效期是多久_铁路12306积分有效期说明
Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项
ArrayList与LinkedList核心操作的Big-O复杂度分析
Typer应用中灵活处理命令行参数的令牌化与解析
QQ邮箱登录官网首页 腾讯QQ邮箱网页入口
Fabric模组开发:自定义物品与物品组的现代管理方法
写好的html代码怎么运行出来_运行写好的html代码方法【教程】


2025-11-03
浏览次数:次
返回列表
y($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);
?>