提问者:小点点

如何在laravel集合中只获取包含值的键?


我有这个数组(集合):

$collect = collect([
    'governorate_id' => $request->governorate_id,
    'area_id' => $request->area_id,
]);

我需要只取request中包含值的一个,忽略另一个(比如当governorate_id为满时,忽略area_id并反转)。

$collect = collect([
    'governorate_id' => $request->governorate_id,
    'area_id' => $request->area_id,
]);

$collect->each(function ($item, $key) {

    // do something..

});
dd for $collect :

 Illuminate\Support\Collection {#1395 ▼
    #items: array:2 [▼
        "governorate_id" => array:2 [▼
        0 => "2"
        1 => "3"
        ]
        "area_id" => null
    ]
}

共1个答案

匿名用户

下面将返回非空的“值”键-值对。

return $collect->filter();

两种组合都试过了。

collect(['area_id' => '122', 'governorate_id' => '', ])
collect(['area_id' => '', 'governorate_id' => 123, ])

较长的版本;

$collect->reject(function ($item) {
        return empty($item);
    });

如果你只需要值;

return $collect->first(function ($item) {
        return !empty($item);
    });