if 和 else 条件在 laravel 中不适用于数据数组
Posted
技术标签:
【中文标题】if 和 else 条件在 laravel 中不适用于数据数组【英文标题】:if and else condition not working in laravel for the array of data 【发布时间】:2020-05-22 01:49:12 【问题描述】:其他情况,抱歉,当购物车为空时,您的购物车中没有商品不打印
@if($datas)
@foreach($datas as $data)
<h5>This is product</h5>
@endforeach
@else
<h5>Sorry no items in your cart</h5> // Not printing when cart is empty
@endif
【问题讨论】:
我猜你在datas
中收到了一组对象,对吧?你试过count
吗?你能在if
语句之前var_dumpdatas
的初始条目吗
【参考方案1】:
这可能是您将$datas
作为一个空集合。
如果您从 Eloquent 模型中获得$datas
中的集合,那么您可以使用isNotEmpty
进行检查,如下所示
@if($datas->isNotEmpty())
@foreach($datas as $data)
<h5>This is product</h5>
@endforeach
@else
// $data is empty
@endif
更多信息请参见documentation
或者您可以通过empty()
(用于数组)方法简单地检查它,如下所示
@if(!empty($datas))
@foreach($datas as $data)
<h5>This is product</h5>
@endforeach
@else
// $data is empty
@endif
【讨论】:
【参考方案2】:如果它的 array 数据然后使用 empty()
@if(!empty($datas))
@else
@endif
或其他方式使用 count()
@if(count($datas) > 0)
@else
@endif
或者如果它的 collection 则使用 isEmpty()
@if(!$datas->isEmpty())
@else
@endif
【讨论】:
【参考方案3】:使用 empty() 函数检查数组是否为空
@if(!empty($datas))
@foreach($datas as $data)
<h5>This is product</h5>
@endforeach
@else
//do
@endif
【讨论】:
【参考方案4】:我几乎可以看到答案。但是让我再解释一下。我可以看到您正在检查 $datas
是否为空。如果您使用辅助函数dd()
转储$datas
值,您可以看到它总是从Illuminate\Support\Collection
返回一个集合。所以即使$datas
是空的,它也会给出一个空集合。您可以在控制器中自行测试,如下所示
if($datas)
dd($datas);
else
dd('empty');
这将始终显示空集合。因此,仅使用 if
条件您无法检查集合是否为空。您可以使用以下方法检查集合,而不是 if
。
collect([])->isEmpty();
@if ($datas->isEmpty())
@endif
collect([])->isNotEmpty();
@if ($datas->isNotEmpty())
@endif
collect([])->first();
@if ($datas->first())
@endif
collect([])->count();
@if ($datas->count())
@endif
如果你查看 Laravel Collection 文档,你可以找到更多。
Collections full documentation
Location above methods available
编辑 01 这个答案直接回答了你的问题。请检查
Eloquent Collection: Counting and Detect Empty
【讨论】:
【参考方案5】:你可以使用 laravel 的 forelse 循环 - https://laravel.com/docs/6.x/blade#loops
@forelse ($datas as $data)
<h5>This is product</h5>
@empty
<h5>Sorry no items in your cart</h5>
@endforelse
【讨论】:
以上是关于if 和 else 条件在 laravel 中不适用于数据数组的主要内容,如果未能解决你的问题,请参考以下文章
使用 if/else 语句返回 observable 不适用于 RxSwift flatMap
if(array.length===1)条件不适用于长度> 1的数组[关闭]