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

PHP:移除SOAP请求生成对象中的空项

清理SOAP生成对象中的空项

嘿,针对你这个由SOAP请求生成的多层嵌套对象空项清理需求,递归处理是最适合的方案——毕竟你的对象里既有嵌套对象,还有数组元素,一层一层手动处理太麻烦了。下面是具体的实现思路和代码:

核心思路

  1. 递归遍历所有层级:不管是对象的属性,还是数组的元素,都逐层深入处理
  2. 精准判断空值:移除空字符串、null、空数组这类无效空项,但保留数值型的0这类有意义的值
  3. 处理后可还原结构:清理完成后可以选择把数组转回对象,保持原有的对象类型

代码实现

function removeEmptyItems($data) {
    // 先把对象转成数组,统一处理逻辑
    if (is_object($data)) {
        $data = get_object_vars($data);
    }

    if (is_array($data)) {
        foreach ($data as $key => $value) {
            // 递归处理子元素,不管是嵌套对象还是数组
            $data[$key] = removeEmptyItems($value);
            
            // 移除空值,但排除数值型的0
            if (empty($data[$key]) && !is_numeric($data[$key])) {
                unset($data[$key]);
            }
        }
        // 如果处理后数组为空,返回null让上层继续清理
        return empty($data) ? null : $data;
    }

    // 原始类型直接返回
    return $data;
}

// 用你的AdminInfo对象调用函数
$cleanedAdminInfo = removeEmptyItems($yourAdminInfoObject);

// 可选:把清理后的数组转回对象结构
$cleanedAdminInfoObject = (object)$cleanedAdminInfo;

针对你的场景的效果

运行这段代码后:

  • IDInfo数组里第一个空的IDInfo对象会被直接移除
  • 所有对象里的空属性(比如第一个IDInfo的IDQualifierCode和IDNum)也会被清理掉
  • 最终你会得到一个没有冗余空项的干净对象,完全保留有效数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:08:10