Comment exclure des éléments dans la boucle foreach

J'essaie d'afficher un ensemble spécifique de références sur ma page laravel en parcourant une boucle foreach et en stylisant différemment les itérations impaires et paires avec @class loop odd / loop even.

Cependant, lorsque je commence la boucle foreach avec un @if, seuls certains entrent dans la boucle tandis que d'autres sont ignorés, ce qui gâche mon impair / pair (par exemple, # 1, # 2 et # 4 entrent dans la boucle, ce qui signifie que je avoir deux éléments stylés avec une boucle paire.

Comment puis-je ignorer ceux qui n'entrent pas dans la boucle afin de pouvoir afficher le résultat avec un style alternatif?

@foreach ($references as $reference )
@if(isset($reference['is_startpage'])
&& $reference['is_startpage']!= 1
&& isset($reference['content']['featured'])
&& $reference['content']['featured'] == 1)
<div @class([
'row py-5' => $loop->odd,
'row flex-row-reverse py-5'=> $loop->even,
])></div>
@endif
@endforeach


Solution du problème

Comme vous le dites, toutes les itérations de boucle n'impriment pas l' <div>élément, donc $loop->evenet $loop->oddles variables ne sont pas valides dans votre cas pour implémenter cette logique spécifique. Cependant, il existe de nombreuses façons d'obtenir ce que vous voulez. La première façon qui me vient à l'esprit est d'utiliser un compteur spécifique pour cela, c'est-à-dire :

@php $featuredCount = 0; @endphp
@foreach ($references as $reference)
@if(
isset($reference['is_startpage'])
&& $reference['is_startpage']!= 1
&& isset($reference['content']['featured'])
&& $reference['content']['featured'] == 1
)
@php $featuredCount++; @endphp
<div @class([
'row py-5', // These two are always present, no need to conditionally rewrite them
'flex-row-reverse' => $featuredCount % 2 == 0, // 'Even' check
])></div>
@endif
@endforeach

Commentaires

Posts les plus consultés de ce blog

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Le shell POSIX (sh) redirige stderr vers stdout et capture stderr et stdout dans des variables