[RESOLU] probleme avec la fonction explode

Eléphanteau du PHP | 10 Messages

18 nov. 2018, 13:59

Bonjour à tous

quand j’exécute ce code il m'affiche bien le contenu du fichier

Code : Tout sélectionner

<?php function lecture($fichier){ $lines= file($fichier); foreach ($lines as $lineNumber => $lineContent){ } echo "<br><br>Nombre d'inscrits : $lines[0]"; echo "<br><br>Participants : <br>"; for ($cptr=1; $cptr<49; $cptr++) { if ($lines[$cptr] != ""){ echo "<br> $lines[$cptr]"; } } return; }
quand je veux utiliser le code suivant avec explode et print_r pour récupérer chaque mot (en vue de pouvoir formater mon affichage) le code affiche bien le contenu donc les valeurs sont bien récupérées et lues au bon endroit dans mon fichier

Code : Tout sélectionner

<?php function lecture($fichier){ $lines= file($fichier); foreach ($lines as $lineNumber => $lineContent){ } echo "<br><br>Nombre d'inscrits : $lines[0]"; echo "<br><br>Participants : <br>"; for ($cptr=1; $cptr<49; $cptr++) { if ($lines[$cptr] != ""){ print_r(explode(' ', $lines[$cptr], 4)); } } return; }
ce qui m'affiche : Participants :
Array ( [0] => nom1 [1] => prenom1[2] => accompagnant [3] => mailcontact) bonjourArray ( [0] => nom2[1] => prenom2[2] => accompagnant ) bonjour... et ainsi de suite jusqua la fin de mon fichier


mais ce que je veux afficher c'est
nom1 prenom1 mailcontact
nom2 prenom2
......
voici le code que je voudrais qui fonctionne :

Code : Tout sélectionner

function lecture($fichier){ $lines= file($fichier); foreach ($lines as $lineNumber => $lineContent){ } echo "<br><br>Nombre d'inscrits : $lines[0]"; echo "<br><br>Participants : <br>"; for ($cptr=1; $cptr<49; $cptr++) { if ($lines[$cptr] != ""){ $string = explode(' ', $lines[$cptr], 4); for($mots=0;$mots<=4;$mots++){ echo " $tring[$mots]"; echo 'bonjour'; } } } return; }
mais dans ce cas il ne m'affiche plus que "bonjourbonjourbonjourbonjour......
donc il passe bien dans la boucle mais ne m'affiche pas les valeurs contenues dans $string

Merci d'avance pour vos réponses :wink:

Avatar du membre
Mammouth du PHP | 1609 Messages

18 nov. 2018, 18:39

Salut, si j'ai bien compris la structure du fichier tu peux faire comme ça :

Code : Tout sélectionner

<?php function lecture1($fichier) { $lines = file($fichier); $registered = array_shift($lines); echo '<br><br>Nombre d\'inscrits : '.$registered; echo '<br><br>Participants : <br>'; foreach ($lines as $line) echo $line.'<br/>'; } function lecture2($fichier) { $lines = file($fichier); $registered = array_shift($lines); echo '<br><br>Nombre d\'inscrits : '.$registered; echo '<br><br>Participants : <br>'; foreach ($lines as $line) { $words = explode(' ', $line); foreach ($words as $word) echo $word.' '; echo '<br/>'; } }
Si dans le fichier, les données sont séparées par des espaces et que tu veux les afficher séparées par des espaces, il suffit d'afficher la ligne (lecture1).

Mais je t'ai mis l'exemple complet dans lecture 2.
Développeur web depuis + de 20 ans

Avatar du membre
Mammouth du PHP | 1564 Messages

19 nov. 2018, 11:54

erreur de frappe: tring au lieu de string:
                                    echo " $tring[$mots]";
                                    echo 'bonjour';

Avatar du membre
Mammouth du PHP | 1564 Messages

19 nov. 2018, 11:55

Quand on utilise des crochets, il est préférable d'entourer la variable avec des accolades:
echo " {$string[$mots]}";

Eléphanteau du PHP | 10 Messages

19 nov. 2018, 12:39

Bonjour, super! merci pour ton aide ( encore une fois hihi)

je suis finalement arrivée à la fonction suivante (voir code...) et vu que je mets ça dans des labels, j'ai su faire un affichage bien propre :D

Code : Tout sélectionner

function lecture($fichier){ $lines= file($fichier); foreach ($lines as $lineNumber => $lineContent){ } echo "<div style='margin-left:20px;'><br> Nombre d'inscrits : $lines[0]</div>" ; ?> <br><label name="nom">Participants : </label><br><br> <?php for ($cptr=1; $cptr<49; $cptr++) { if ($lines[$cptr] != ""){ $string = explode(' ', $lines[$cptr], 4); for($mots=0;$mots<=3;$mots++){ //$val="val".$cptr.$mots; if($string[$mots] != ""){ $val = $string[$mots]; ?> <label name="nom" value=""><?php echo $val; ?></label> <?php } else{ break; } } echo '<br>'; } if ($lines[$cptr] == ""){ break; } } return; }