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([])-&gt;isEmpty();

    @if ($datas->isEmpty())
    
    @endif
    

    collect([])-&gt;isNotEmpty();

    @if ($datas->isNotEmpty())
    
    @endif
    

    collect([])-&gt;first();

    @if ($datas->first())
    
    @endif
    

    collect([])-&gt;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的数组[关闭]

在 Laravel Blade 文件中使用 IF 条件的正确方法是啥?

R语言中的if else语句

laravel模板使用

如何在 laravel 中为 highcharts 做 if else 语句