Bonjour tout le monde...
Je bloque sur un truc depuis hier, j'essai d'afficher des résultats 4 par 4 extrait d'une boucle, j'ai fait du bidouillage mais je suppose qu'il existe une meilleure façon de faire... Voici mon code, Mmmm....

foreach (array_expression as $key => $value){
$myKey = $key+1;
If($myKey > 4){
  //do something
} elseIf($myKey > 8){
  //do something
}  elseIf($myKey > 12){
  //do something
}  
}


Merci de vos retours
Salut,

pour faire ça tu peux utiliser le modulo


$myKey = 12;
if(  $myKey %  4 == 0) {
    console.log($myKey);
}


cet opérateur retourne ce qu'il reste après la division donc si tu as 0, c'est que $myKey est bien un multiple de 4
Merci pour cette réponse. Effectivement en utilisant le modulo cela fonctionne...mais finalement je rencontre un problème que je n'avais pas décelé Smiley ohwell
J'essai d'éditer un code html du style :

<div class="maClass">
<ul>
  <li>item</li>
  <li>item2</li>
  <li>item3</li>
</ul>
</div>

<div class="maClassBis">
<ul>
  <li>itembis</li>
  <li>itembis2</li>
  <li>itembis3</li>
</ul>
</div>

<div class="maClassTer">
<ul>
  <li>itemter</li>
  <li>itemter</li>
  <li>itemter</li>
</ul>
</div>


Du coup avec le modulo j'arrive bien repérer chaque itération divisible par 4 mais forcément elle ne garde pas les suivant qui devrait se retrouver dans la class

foreach (myArray as $key => $value){
if($key % 4 == 0){
 echo '<div class="maClass"><ul>;
}  
echo '<li>$value</li>;
}
if($key % 4 == 0){
 echo '</ul></div>';
}


Je sais pas si ma question est claire, mais je suis là Smiley smile
Modifié par urlien (17 Feb 2020 - 11:41)
Modérateur
Bonjour, pour se problème, il faut soit:

1) séparer le tableau en aval:

<?php
$array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'];
$chunks = array_chunk($array, 4);
?>

<table>
<?php foreach ($chunks as $line): ?>
  <tr>
  <?php $line = array_pad($line, 4, ''); ?>
  <?php foreach ($line as $col): ?>
    <td><?php print $col; ?></td>
  <?php endforeach; ?>
  </tr>
<?php endforeach; ?>
</table>


2) Utiliser les modulos:

<?php
$array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'];
?>

<table>
<?php foreach ($array as $key => $col): ?>
  <?php if ($key%4 == 0): ?><tr><?php endif; ?>
    <td><?php print $col; ?></td>
  <?php if ($key%4 == 3): ?></tr><?php endif; ?>
<?php endforeach; ?>
<?php if ($key%4 !== 3): ?>
  <?php for ($i= $key%4; $i < 3; $i++): ?><td></td><?php endfor; ?>
  </tr>
<?php endif; ?>
</table>


p.s.: J'ai ajouté un peu de complexité ici pour avoir toujours 4 éléments sur la dernière ligne, avec array_pad dans l'exemple 1 et la boucle for de l'exemple 2
Bon... J'ai découvert la fonction array_chunk en php pour arriver à ce que je souhaite !
Il est parfois difficile de trouver les bons mots pour arriver au résultat de recherche souhaité !
Merci en tous les cas...
++
Meilleure solution