在 Laravel 中检查请求数组是不是为空

Posted

技术标签:

【中文标题】在 Laravel 中检查请求数组是不是为空【英文标题】:Checking if a request array is empty in Laravel在 Laravel 中检查请求数组是否为空 【发布时间】:2017-07-02 23:42:38 【问题描述】:

我有一个动态生成的表单,它给了我一个输入数组。但是数组可能是空的,那么 foreach 就会失败。

    public function myfunction(Request $request)
    
    if(isset($request))
     
       #do something
     

    

这显然不起作用,因为它是一个 $request 对象并且总是被设置。但是我不知道如何检查是否有任何输入。

有什么想法吗?

【问题讨论】:

【参考方案1】:

一个简单的计数检查就可以了

if (count($request->all())) 
  // foreach here.

【讨论】:

【参考方案2】:

如果您有您期望的表单输入的参考,那么Request::has() 可能是一个很好的使用方法。 Request::all() 可能包含 XSRF 令牌之类的内容,并且会给您带来误报。

【讨论】:

【参考方案3】:

我总是通过向App\Http\Controllers 目录中的Controller 添加一个函数来执行此操作。

use Illuminate\Http\Request;
public function hasInput(Request $request)

    if($request->has('_token')) 
        return count($request->all()) > 1;
     else 
        return count($request->all()) > 0;
    

相当不言自明,如果_token 之外的其他输入变量返回true,或者如果没有token 并且包含其他变量,则返回true。

【讨论】:

你可以通过去掉那些内部的if 语句来简化这个函数,而是使用return count($request->all()) > 0;return count($request->all()) > 1; ^ 完全正确。不需要其他的。第一个 if 语句将返回 true 或 false。【参考方案4】:

Request 类有一个except() 方法,该方法包括除定义的键之外的所有内容。所以:

if ( !empty( $request->except('_token') ) )

当请求数组中有“东西”时执行代码。

【讨论】:

如果 (!empty($request->except('_token','_method')))),我会这样做【参考方案5】:

上面的@Saravanan 代码的简单修改。我同意他的观点,即简单检查请求中的输入总数即可。

if(count($request->all()) >= 1)

   //execute if the request has one or more input fields

else 
  //executes if the request is totally empty.

【讨论】:

以上是关于在 Laravel 中检查请求数组是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 检查@yield 是不是为空

Laravel 检查集合是不是为空

Laravel 8:检查数据库中的记录是不是为空

如何检查 Laravel 集合是不是为空?

Laravel/PHP - 如何检查 JSON 是不是为空? [复制]

Laravel:当数组为空时数组循环的集合