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

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

本文介绍了如何在 PHP 中递归地删除多维数组中的 `null` 和空字符串值,同时保留值为 0 的元素。我们将提供一个经过优化的递归函数,并通过示例代码演示其用法和效果,确保在处理复杂数据结构时,能够准确地清理掉不需要的空值,从而得到更简洁的数据。

在 PHP 开发中,处理多维数组是常见的任务。有时,我们需要从数组中移除 null 值或空字符串,以保持数据的清洁和一致性。array_filter() 函数虽然可以实现数组过滤,但默认情况下会移除值为 0 的元素。本文提供了一种递归方法,可以删除多维数组中的 null 和空字符串,同时保留 0 值。

递归函数实现

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

 &$value) {        if (is_array($value)) {            array_remove_empty($value);            if (empty($value)) {                unset($array[$key]); // Remove empty sub-arrays            }        } else {            if ($value === null || $value === '') {                unset($array[$key]);            }        }    }}?>

代码解释:

立即学习“PHP免费学习笔记(深入)”;

array_remove_empty(&$array): 该函数接受一个数组的引用作为参数。使用引用允许函数直接修改原始数组。foreach ($array as $key => &$value): 循环遍历数组的每个元素。同样,这里使用了引用,以便在循环内部直接修改数组元素。if (is_array($value)): 检查当前元素是否为数组。如果是,则递归调用 array_remove_empty() 函数来处理子数组。if (empty($value)): 在递归调用之后,检查子数组是否为空。如果为空,则使用 unset($array[$key]) 删除该子数组。else { if ($value === null || $value === ”) { unset($array[$key]); } }: 如果当前元素不是数组,则检查其是否为 null 或空字符串。如果是,则使用 unset($array[$key]) 删除该元素。

注意事项:

使用引用传递数组和元素可以提高效率,并允许函数直接修改原始数组。在递归调用之后检查子数组是否为空,可以避免删除包含有效数据的父数组。使用 === 运算符进行严格比较,以区分 null、空字符串和 0 值。

使用示例

 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  ]];array_remove_empty($dataPayment);print_r($dataPayment);?>

预期输出:

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        ))

总结

通过使用上述递归函数,可以有效地从 PHP 多维数组中删除 null 和空字符串值,同时保留值为 0 的元素。这在处理来自数据库或其他数据源的数据时非常有用,可以确保数据的清洁和一致性。记住,使用引用传递数组可以提高效率,并且需要仔细考虑递归调用的深度,以避免潜在的性能问题。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1330609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月12日 16:45:10
下一篇 2025年12月12日 16:45:19

相关推荐

发表回复

登录后才能评论
关注微信