JeuWeb - Crée ton jeu par navigateur
[Résolu] Petit problème avec la fonction file() - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Petit problème avec la fonction file() (/showthread.php?tid=2693)

Pages : 1 2


[Résolu] Petit problème avec la fonction file() - Arathor - 19-06-2008

Bonjour,
J'ai un léger problème avec la fonction file(). Je m'explique : j'enregistre les cartes de différentes colonies de chaque joueur dans un fichier .txt, dans lequel j'ai des lignes sous cette forme : 0 1 2 0 0 1 1 1 2 2 2 2 3 3 3 0 0 etc... (chaque nombre représente un type de case, par exemple 2 = forêt).
Pour d'afficher la map, je sélectionne toutes ces lignes grâce à la fonction file(), qui me renvoi un array dans lequel chaque ligne représente une ligne de mon fichier (normal ConfusedangfroidSmile. Le seul problème, c'est que dans mon array chaque ligne c'est vu rajouter un espace au début !
Du coup, lorsque j'enregistre mon fichier (si le joueur à construit un bâtiment) chaque ligne de mon fichier texte se retrouve avec un espace en trop au début... Donc à long terme je vais me retrouver avec des dizaines d'espace en trop devant chaque ligne, ce qui à pour effet de décaler les cases de ma map et de rendre mes fichiers plus lourds...
Y a t-il une solution pour corriger ce problème ? (en évitant si possible de devoir corriger chaque ligne une à une)
De mon côte je n'est rien trouvé qui puisse m'aider...


RE: Petit problème avec la fonction file() - Shivaan Keldon - 19-06-2008

montre nous comment tu fais pour alimenter l'array en question. c'est sans doute un petit soucis d'algo


RE: Petit problème avec la fonction file() - Arathor - 19-06-2008

Alors pour créer le array je fait comme ça :
Code PHP :
<?php 
$_SESSION
['map'] = file('joueurs/colonies/' . $_SESSION['pseudo'] . '.txt');

et pour enregistrer les modifications : (ici la variable $_SESSION['carte'] contient déjà l'espace en trop)
Code PHP :
<?php 
$Fnm
= 'joueurs/colonies/' . $_SESSION['pseudo'] . '.txt';
$inF = fopen($Fnm,"w+");

$carte = implode(" ", $_SESSION['map']);
fputs($inF, $carte);
fclose($inF);



RE: Petit problème avec la fonction file() - Anthor - 19-06-2008

trim() ?


RE: Petit problème avec la fonction file() - keke - 20-06-2008

trim permet d'enlever les espace encadrant une donnée. J'ai l'impression effectivement qu'Anthor à mis le doigt sur ton problème.

kéké.


RE: Petit problème avec la fonction file() - Anthor - 20-06-2008

J'évite de mettre mon doigt dans les problèmes Smile


RE: Petit problème avec la fonction file() - barst - 20-06-2008

trim conviendrait mais il voudrait éviter de faire une boucle.

et je ne connais pas d'équivalent à trim pour les tableaux


RE: Petit problème avec la fonction file() - Anthor - 20-06-2008

Ha...

Et ca :
Code PHP :
<?php 
$carte
= trim(implode(" ", $_SESSION['map']));

Ça rajoute pas de boucle et pourtant ça enlève l'espace en trop, c'est bien le problème à régler non ?


RE: Petit problème avec la fonction file() - barst - 20-06-2008

oui effectivement tu le retires avant la sauvegarde.

moi je cherchais à le supprimer lors de la récupération où il apparait dans un tableau à 2 dimensions remplis par le file().


RE: Petit problème avec la fonction file() - Anthor - 20-06-2008

Ça marche pareil ^^

Code PHP :
<?php 
$_SESSION
['map'] = array_map('trim', file('joueurs/colonies/' . $_SESSION['pseudo'] . '.txt'));

Smile