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

PHP多维数组移除含空翻译值的子数组问题求助

解决PHP多维数组中移除translation为空的子数组问题

我来帮你搞定这个问题!你当前的递归过滤函数只用到了array_filter()的默认行为——它只会移除值为「假」的元素(比如空字符串、null、0等),但没法精准过滤掉你需要的「translation为空的子数组」。咱们得给过滤逻辑加个自定义规则才行。

问题根源

原函数里的array_filter($input)没有指定过滤规则,默认只会移除空值元素,但你要过滤的是包含空translation字段的子数组,这需要明确的判断条件。

修改后的递归过滤函数

下面是调整后的代码,专门针对你的需求做了自定义过滤:

$arr = array(
    16 => Array (
        0 => Array (
            'language' => 'de',
            'translation' => 'blog/beer'
        ),
        1 => Array (
            'language' => 'en',
            'translation' => 'blog/some-slug-yeah'
        ),
        2 => Array (
            'language' => 'es',
            'translation' => ''
        ),
        3 => Array (
            'language' => 'fr',
            'translation' => 'blog/paris-big-city'
        ),
        4 => Array (
            'language' => 'it',
            'translation' => ''
        ),
        5 => Array (
            'language' => 'nl',
            'translation' => 'blog/nederlands-slug'
        )
    )
    // 更多数组元素...
);

function array_filter_translations($input) {
    // 先递归处理所有嵌套的子数组
    foreach ($input as &$value) {
        if (is_array($value)) {
            $value = array_filter_translations($value);
        }
    }
    unset($value); // 释放引用,避免后续操作出现意外问题

    // 自定义过滤规则:只保留translation非空的语言子数组
    return array_filter($input, function($item) {
        // 判断当前元素是否是带translation的语言条目
        if (is_array($item) && isset($item['translation'])) {
            // 这里用trim是为了过滤掉纯空格的情况,不需要的话可以直接用$item['translation'] !== ''
            return trim($item['translation']) !== '';
        }
        // 其他类型的元素(比如外层的分组数组)直接保留
        return true;
    });
}

// 执行过滤
$results = array_filter_translations($arr);
// 查看结果
print_r($results);

关键说明

  • 自定义过滤回调:通过array_filter()的第二个参数,我们明确只移除translation为空(或纯空格)的语言子数组,其他元素正常保留。
  • 递归处理嵌套:确保深层嵌套的符合条件的子数组也会被过滤。
  • 引用释放:foreach里的引用要及时 unset,避免后续操作污染数组。

运行这段代码后,你会发现ES和IT语言对应的空translation子数组已经被成功移除了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:31:22