You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP多维数组删除null/空字符串值保留0值的实现问题

问题原因

你的原有代码存在两个问题导致无法达到预期效果:

  • 递归调用处理子数组时,没有将处理后的子数组赋值回原数组,子数组的修改不会同步到上层数组
  • 未判断子数组处理后是否为空,全为null的空数组(如示例中的subscription)也需要删除

修正后的代码

private function arrayUnset( $dataPayment )
{
    foreach( $dataPayment as $key => $value ) 
    {
        if( is_array( $value ) )
        {
           // 递归处理后将结果回写到原数组
           $processedSubArray = $this->arrayUnset( $value );
           if (empty($processedSubArray)) {
               // 子数组处理后为空直接删除
               unset($dataPayment[$key]);
           } else {
               $dataPayment[$key] = $processedSubArray;
           }
           // 子数组处理完就跳过后续的null判断,避免误删有效子数组
           continue;
        }
        if( $value === null || $value === "" ) 
        {
            unset( $dataPayment[ $key ] ); 
        } 
    }
    return $dataPayment;
}

逻辑说明

  • 递归处理子数组后,将处理结果回写到父数组对应的键位,确保子数组的修改生效
  • 新增子数组空值判断:如果子数组处理完所有null和空字符串后为空,直接删除该子数组键
  • 对数组类型的值跳过后续的null判断,避免把非空的子数组误判为无效值删除
  • 保留值为0、false等合法的非null、非空字符串值

内容的提问来源于stack exchange,提问作者Rafa1285

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:15:03