删除数组中的所有空子数组

如何过滤数组并删除所有空元素。我需要从数组中删除空元素,包括数组中的数组。


从那个数组:


$array = [

    'ip' => '127.0.0.1',

    'user_agent' => 'dkdkdk',

    '_id' => 'fjjfjf',

    'user' => [

        'longName' => '', 

        'shortName' => '',

        'username' => [

            'a' => 'b',

            'c' => ''

            ]

    ],

    'dsd' => [

        'zz' => [

            'dd' => [

                'ff' => ''

                ]

            ]

        ]

    ],

    'dsddd' => '',

    'vcv' => null,

    'aavx' => 0

];

我想得到:


$array = [

    'ip' => '127.0.0.1',

    'user_agent' => 'dkdkdk',

    '_id' => 'fjjfjf',

    'user' => [

        'username' => [

            'a' => 'b',

            ]

    ],

    'aavx' => 0

];

我尝试使用 array_filter 但它只删除不删除数组键


冉冉说
浏览 182回答 1
1回答

德玛西亚99

要删除所有空数组或键,您将必须递归迭代并通过引用传递值给后续的递归调用,以确保您编辑子数组的相同副本。现在,您可以只使用空支票并取消设置它们。function removeEmptyArrays(&$array){    foreach($array as $key => &$value){        if(is_array($value)) removeEmptyArrays($value);        if(is_array($value) && count($value) == 0 || is_null($value) || is_string($value) && strlen($value) == 0) unset($array[$key]);    }}演示: https ://3v4l.org/XDJdD
打开App,查看更多内容
随时随地看视频慕课网APP