首页 > 解决方案 > 拉拉维尔 | 从关联数组中过滤空值

问题描述

我有一个这样的关联数组:

 $myarray = array(
                'key1' => 'value1'
                'key2' => 'value1','value2','value3', null ,'value4'
                 null
                'key4' => null ,'value2','value3', null
                'key5'
                 null
                );

我想删除空值,我试过这个:

$collection = collect($myarray);

            $filtered = $collection->filter(function ($value, $key) {
                return $value != null;
            });

结果是这样的:

     $myarray = array(
                'key1' => 'value1'
                'key2' => 'value1','value2','value3', null ,'value4'
                'key4' => null ,'value2','value3', null
                'key5'
                );

但我想要的结果是这样的:

     $myarray = array(
                'key1' => 'value1'
                'key2' => 'value1','value2','value3','value4'
                 null
                'key4' => 'value2','value3'
                'key5'
                 null
                );

我怎样才能做到这一点?

PS:我使用的是 Laravel 5.4.36

标签: laravelassociative-array

解决方案


null您的代码从顶级数组中删除值。您的“期望结果”会null嵌套数组中删除值。

试试这个:

foreach ($myarray as $key => $value) {
    if (is_null($key) || !is_array($value)) {
        continue;
    }

    $myarray[$key] = array_filter($value);
}

推荐阅读