8795 sujets

Développement web côté serveur, CMS

Bonjour à tous,

j'ai un petit blocage php que je n'arrive pas à résoudre:

j'ai une jolie boucle qui me permet d'afficher les intros d'articles de blog dans une page.


<?php foreach ($list as $item) :  ?>
	<a href="<?php echo $item->link; ?>"><?php echo $item->introtext; ?></a>
<?php endforeach; ?> 


je voudrai restreindre cette boule à 3 réponses maxi.
j'ai bien pensé à utiliser

for ($i = 1; $i <= 3; $i++)


soit je l'utilise autour de ma boucle foreach et là j'ai 3 fois tous les articles de la liste;
soit je l'utilise à l'intérieur de foreach et là j'ai 3 fois l'article1, 3 fois l'article2... et ainsi de suite pour tous les articles.

pourriez vous m'aider à ordonner un peu tout cela?
merci de votre attention et bonne journée Smiley smile
Modifié par Claire39 (26 Nov 2013 - 09:08)
Bonjour Claire39

Ton $item tu l'obtiens à partir de quelle requête? peut être que tu pourrais limiter à 3 le résultat de ta requête pour $item en amont?

C'est juste une idée Smiley confused
Peter-L a écrit :


Ton $item tu l'obtiens à partir de quelle requête? peut être que tu pourrais limiter à 3 le résultat de ta requête pour $item en amont?

C'est juste une idée Smiley confused

C'est ce qu'il faudrait logiquement faire.

Autrement tu peux stopper ta boucle avec break.

<?php
$i = 0;
foreach ($list as $item) :  ?>
	<a href="<?php echo $item->link; ?>"><?php echo $item->introtext; ?></a>
<?php $i++; // Boucle numéro...
if ($i === 3) { break; } // On arrête à la 3éme boucle ?>
<?php endforeach; ?> 
Bonjour,

Peut-être que array_slice() pourrait faire l'affaire dans ton cas ?
Comme ceci :
<?php foreach (array_slice($list, 0, 3) as $item) :  ?>
	<a href="<?php echo $item->link; ?>"><?php echo $item->introtext; ?></a>
<?php endforeach; ?>

Modifié par Raphi (25 Nov 2013 - 11:56)
Bonjour et merci de vos réponses Smiley smile

à tester, j'ai préféré utiliser la réponse de bzh parce que je peux la comprendre.
merci de votre aide et bonne journée à tous Smiley smile
C'est vrai que je n'ai pas expliqué ma réponse avec array_slice().
En fait c'est tout simple :
array_slice($list, 0, 3) signifie que tu commences à l'élément 0 de ton tableau $list et que ce tableau possède une longueur de 3 c'est à dire qu'il possède 3 éléments.
Du coup lorsque tu fais un foreach dessus, il ne bouclera que 3 fois puisque tu lui aura indiqué que ce tableau n'avait que 3 éléments.

Voila pour le petit complément, bonne continuation ! Smiley smile