
本文介绍了如何在 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
微信扫一扫
支付宝扫一扫