首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查数组是否有一个或多个空键,而不是删除父数组。

检查数组是否有一个或多个空键,而不是删除父数组。
EN

Stack Overflow用户
提问于 2018-01-30 11:18:56
回答 2查看 74关注 0票数 0

我有一个多维数组(键值),一些值没有被设置,在这种情况下是空的,如果是的话,父数组必须从主数组中删除。

我生成的代码只删除空键。

在我的示例中,IT & ES语言翻译键是空的,因此我们需要删除这个父数组。

代码语言:javascript
运行
复制
$results = $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
                )

        )

        [...]//more
)

函数移除键。

代码语言:javascript
运行
复制
        function array_filter_recursive($input){
            foreach ($input as &$value){
                if (is_array($value)){
                    $value = array_filter_recursive($value);
                }
            }
            return array_filter($input);
        }

        $results  = array_filter_recursive( $results );
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-30 11:41:22

如果数组总是有两个级别,则不需要递归。

代码语言:javascript
运行
复制
 function array_filter_recursive($input){
        foreach ($input as &$value){
            $value = array_filter($value, function($x) { return !empty($x['translation']); });
        }
        return $input;
    }

demo

票数 1
EN

Stack Overflow用户

发布于 2018-01-30 11:25:55

如果你的结构总是这样的话:

代码语言:javascript
运行
复制
$arr = (
        [0] => Array
            (
                [language] => de
                [translation] => blog/beer
            )

        [1] => Array
            (
                [language] => en
                [translation] => blog/some-slug-yeah
            )

你可以这样做:

代码语言:javascript
运行
复制
for($i = 0; $i < count($arr); $i++}
    if(!isset($arr[$i]["translation"]){
        unset($arr[$i])
    }
}

//re-index thee array;
$arr = array_values($arr);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48520122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档