我想检查我的foreach是否为空,因此基本的html标记不显示,内部没有结果。我正在尝试将其包装在if语句中,然后如果它是空的,则不执行任何其他循环操作。
@if ($status->replies === '')
@elseif
<div class="media-body reply-body">
@foreach ($status->replies as $reply)
<p>{{ $reply->body }}</p>
@endforeach
</div>
@endif
@if (!(empty($status->replies))
<div class="media-body reply-body">
@foreach ($status->replies as $reply)
<div class="media">
<a class="pull-left" href="{{ route('profile.index', ['username' => $reply->user->username]) }}">
<img class="media-object" alt="{{ $reply->user->getNameOrUsername() }}" src="{{ $reply->user->getAvatarUrl() }}">
</a>
<div class="media-body">
<h5 class="media-heading"><a href="{{ route('profile.index', ['username' => $reply->user->username]) }}">{{ $reply->user->getNameOrUsername() }}</a></h5>
<p>{{ $reply->body }}</p>
<ul class="list-inline list-replies">
<li>
<a href="{{ route('status.like', ['statusId' => $reply->id]) }}"><i class="fa fa-thumbs-up"></i></a>
{{ $reply->likes->count() }} {{ str_plural('like', $reply->likes->count()) }}</li>
<li>{{ $reply->created_at->diffForHumans() }}</li>
</ul>
</div>
<hr>
</div>
@endforeach
</div>
@endif
答案 0 :(得分:141)
检查documentation以获得最佳效果:
@forelse($status->replies as $reply)
<p>{{ $reply->body }}</p>
@empty
<p>No replies</p>
@endforelse
答案 1 :(得分:26)
我认为您正在尝试检查数组是否为空。您可以这样做:
@if(!$result->isEmpty())
// $result is not empty
@else
// $result is empty
@endif
参考 isEmpty()
答案 2 :(得分:4)
如果存在则回显数据
有时您可能希望回显一个变量,但您不确定该变量是否已设置。我们可以用详细的PHP代码表达这一点:
{{ isset($name) ? $name : 'Default' }}
然而,Blade并没有编写三元语句,而是为您提供以下方便的捷径:
{{ $name or 'Default' }}
在此示例中,如果$ name变量存在,则将显示其值。但是,如果它不存在,将显示“默认”一词。
答案 3 :(得分:2)
它是一个数组,所以==== ''
无法工作(===表示它必须是一个空字符串。)
使用count()标识数组中有任何元素(count返回一个数字,1或更大将评估为true,0 = false。)
@if (count($status->replies) > 0)
// your HTML + foreach loop
@endif
答案 4 :(得分:2)
你应该使用empty()
@if (!empty($status->replies))
<div class="media-body reply-body">
@foreach ($status->replies as $reply)
<p>{{ $reply->body }}</p>
@endforeach
</div>
@endif
你可以使用count,但是如果数组较大则需要更长的时间,如果你只需要知道它是空的,空的是更好的使用。
答案 5 :(得分:0)
如果我理解这个问题,这是我最好的解决方案:
使用link1
方法在$object->first()
语句中运行一次代码,即第一次循环时的代码。 if
也是如此。
$object->last()
答案 6 :(得分:0)
使用以下代码,可以先使用laravel指令的@isset检查变量是否已设置,然后使用@unless的laravel指令检查数组是否为空或不使用
@if(@isset($names))
@unless($names)
Array has no value
@else
Array has value
@foreach($names as $name)
{{$name}}
@endforeach
@endunless
@else
Not defined
@endif