
本文介绍了如何在 PHP 中递归地从多维数组中删除 `null` 和空字符串值,同时保留值为 0 的元素。通过示例代码和详细解释,帮助开发者理解如何正确地处理多维数组,避免常见错误,并提供了一种高效的解决方案。
在 PHP 开发中,处理多维数组是很常见的任务。有时我们需要清理数组,移除其中不需要的 null 值或者空字符串,但又要保留有意义的零值。本文将提供一种递归方法,以实现此目的。
递归函数实现
以下是一个用于递归删除多维数组中 null 和空字符串值的 PHP 函数:
&$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);?>
代码解释:
人声去除
用强大的AI算法将声音从音乐中分离出来
23 查看详情
立即学习“PHP免费学习笔记(深入)”;
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中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/288513.html
微信扫一扫
支付宝扫一扫