Page 1 sur 1

Boucle + supprimer le dernier caractère

Posté : 17 nov. 2015, 17:52
par PortgasDKiba
Bonjour,

je suis en train d'essayer de supprimer la dernière virgule de mon résultat dans une boucle mais je ne trouve pas la solution :
<?php
								$i = 0;
								foreach($lexamens[$rowL->l_id] as $l_id => $lexamen) {
									$comments = ($lexamen['commentaire'] !== '') ? '<i>'. $lexamen['commentaire'] .'</i>' : '';
									echo ''. $lexamen['nom'] .' '. $comments .', ';
									if((++$i % 5) === 0) {
										echo '<br />';
									}
								}
								?>
Dans le rendu ça donne : Examen1, Examen2, Examen3, Examen4, Examen5,<br />Examen6, Examen7,

Je voudrai supprimer la virgule après "Examen7,"

Un petit coup de pouce please ?

Merci !

Re: Boucle + supprimer le dernier caractère

Posté : 17 nov. 2015, 17:55
par or 1
concatener dans une chaine au lieu de faire un echo et un trim à la fin sur la virgule.

Re: Boucle + supprimer le dernier caractère

Posté : 17 nov. 2015, 18:05
par PortgasDKiba
Je ne suis pas sûr de comprendre ce que tu veux dire or1

Re: Boucle + supprimer le dernier caractère

Posté : 17 nov. 2015, 18:09
par moogli
salut,

il faut que tu compares l'index courant avec le nombre d'élement (moins 1). S'il ne s'agit pas du dernier élément tu affiches la virgule.
par exemple en testant la supériorité du nombre d'élément dans le tableau.

if( (count($tableau)-1) > $index) {
echo ',';
}

la solution de or1 est peux être la plus performante si la concaténation est plus performante que la comparaison.
A toi de voir ce que tu trouveras le plus lisible.

edit : concaténation avec +=
pour trim : http://php.net/trim

Re: Boucle + supprimer le dernier caractère

Posté : 18 nov. 2015, 12:03
par PortgasDKiba
Du coup j'ai fonctionné comme ceci :

Je ne sais pas si c'est la méthode la plus optimale mais ça fonctionne...
<?php
								foreach($lexamens[$rowL->l_id] as $l_id => $lexamen) {
									if($lexamen['nom'] !== '' AND $lexamen['commentaire'] !== '') {
										$nomexamen = ''. $lexamen['nom'] .' <i>'. $lexamen['commentaire'] .'</i>';
									} else if($lexamen['nom'] !== '' AND $lexamen['commentaire'] === '') {
										$nomexamen = ''. $lexamen['nom'] .'';
									}
									$tableau[] = ''. $nomexamen .'- ';
								}
								$lastItem = count($tableau) -1;
								$tableau[$lastItem] = substr($tableau[$lastItem], 0, -2);
								$i = 0;
								foreach($tableau as $value){
									echo $value;
									if((++$i % 5) === 0) {
										echo '<br />';
									}
								}
								?>