繁体   English   中英

检查请求对象为空Laravel

[英]Check Request object is empty Laravel

一次添加多个联系人。 如果联系人在表单中有详细信息。我想检查输出值是否为空,我不想保存这些值。 否则,保存值

 <tr >
 <td> {!!Form::text('contact[][first_name]',NULL,['class'=>'form-control'])!!}
 </td>
 <td> {!!Form::text('contact[][last_name]',NULL,['class'=>'form-control'])!!}
 </td>
 <td> {!!Form::text('contact[][email]',NULL,['class'=>'form-control'])!!}
 </td>
 <td> {!!Form::text('contact[][contact]',NULL,['class'=>'form-control'])!!}
 </td>

我面临的问题是

 $contacts =  $request->contacts ;

我想检查此请求中是否有任何不为null的值保存到database.if请求中的所有值。 不需要保存

用foreach循环检查它们:

$save = true;
foreach ($contacts as $contact) {
    if ($contact === null) {
        $save = false;
    }
}

if ($save) {
    //Save everything
}

我不确定您是否想知道是否存在任何值为null ,或者是否所有值均为null (或者,任何值都不为 null )。

无论哪种情况,都可以使用多个本机数组函数。

知道数组中的任何值是否为 null

我会使用in_array

in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool

除非设置严格,否则使用松散比较在干草堆中搜索针。

在您的情况下:

$save = in_array(null, $contacts);

要知道数组中的任何值都不为 null

我会用array_filter

array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array

遍历数组中的每个值,将它们传递给回调函数。 如果回调函数返回true,则将数组中的当前值返回到结果数组中。 保留阵列键。

...如果未提供回调,则将删除所有等于FALSE的数组条目( 请参阅转换为boolean )。

因此,如果您不区分null或其他false -y值,请使用:

$flitered = array_filter($contacts);

这将在$ contacts中创建仅包含truth值-y值的数组。

如果要严格过滤null ,则需要传递过滤器回调。 由于没有is_not_null函数,我们将对其进行定义:

$filtered = array_filter($contacts, function ($val) {
    return $val !=== null;
});

(顺便说一句,我已经提到过对其进行了一些微优化,以将匿名回调定义为static ,但这是不相关的)。

然后,您可以:

$save = (bool) $filtered;

如果为空,则将数组强制转换为布尔值将导致false$contacts没有有效值),否则返回true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM