如何确定请求输入数组是空的?

时间:2016-12-27 14:06:49

标签: laravel laravel-5.2

我正在使用laravel 5.2。我有个问题。如果我发送像

这样的请求
http://localhost/test?sports[]=soccer&sports[]=basketball

我可以将体育作为一个包含2个元素的数组。

但是,如果我发送请求:

http://localhost/test?sports[]

我通过$sports = $request->input('sports')得到它,我认为它是一个空数组,但实际上并非如此。我var_dump()

array(1) { [0]=> string(0) "" }

所以有人可以告诉我如何确定请求输入数组数据是空的?

补充:

我的routes.php

Route::get('/test',function(Illuminate\Http\Request $request){
    var_dump($request->has('sports'));
});

我访问http://localhost/test?sports[]

输出为真。

1 个答案:

答案 0 :(得分:1)

我认为您不需要任何内置功能,但您可以创建Request宏:

Request::macro('someCoolName', function ($key) {
    return is_array($this->input($key)) && (count($this->input($key)) == 1) && empty($this->input($key)[0]) ? [] : $this->input($key);
});

注意 - 使用boot()的{​​{1}}方法添加它。

然后您可以将其用作:

App\Providers\AppServiceProvider

如果您的网址类似于$request->someCoolName('sports'); // returns []

,则会返回emprty数组[]