Commande array

gui
Eléphant du PHP | 100 Messages

05 mars 2010, 10:40

Bonjour à tous,
Je souhaite vous poser quelques questions sur la commande "array" qui s'avère être bien pratique et pourrai bien résoudre un de mes problèmes.
Alors je souhaite définir un tableau dans une boucle "For" et remplir le tableau au fur et à mesure des passage dans ma boucle For.

Cela donnerai alors :
for($a=0;$a<strlen($sequence)-$this->b-1;$a++){    
                    
			$this->file=substr($sequence,$a,$this->b);

			#$this->resultat($this->file);                
       
			#echo $this->file."<br/>";

			$arr=array("$this->file"=>"$a");

			echo $arr;

                      }

Problème, je ne pense pas que cela soit possible sous cette forme, à mon echo mon script renvoie une ligne avec des "Array" qui se suivent.
J'ai une autre question, peut-on enregistrer un tableau dans un fichier texte et le récupérer dans un autre script.
Merci beaucoup d'avance
guillaume

Eléphanteau du PHP | 31 Messages

05 mars 2010, 11:02

Bonjour,

Si $arr est un tableau, tu ne peux pas faire un écho (sinon ça affiche Array comme tu as pu le constater).

Si tu veux afficher le contenu du tableau (j'imagine que c'est pour du débug) tu peux utiliser la fonction print_r() ou la fonction var_dump(). La première affichera le contenu du tableau, la seconde te donnera en plus des informations sur le type des données.

gui
Eléphant du PHP | 100 Messages

05 mars 2010, 11:20

Oui en effet cela fonctionne, j'ai aussi trouver un moyen de sauvegarder les tableaux dans des fichiers textes avec la commande "serialize($arr)" qui va linéariser le tableau et le délinéariser avec unserialize($var).
Merci pour tout.

gui
Eléphant du PHP | 100 Messages

05 mars 2010, 12:40

Alors avec la fonction array j'ai crée un tableau dans lequel j'ai placé toutes mes valeurs. Pour récupérer ce tableau de valeur sur un autre script je l'ai sauvegarder sur un fichier texte avec la commande $s = serialize($arr);
A présent je souhaite ouvrir ce fichier contenant mon tableau linéarisé et le remettre sous sa forme d'origine (un tableau).
J'ouvre donc mon fichier via un fopen:

$f = fopen("C:\...\sequence1.fasta", 'r') or die("can't open file for Msa export in FASTA");

Et je prend ma variable linéarisé que je "délinéarise" avec la fonction $arg = unserialize($f);
Cette fonction doit prendre en argument une fonction linéarisé pourtant cela ne fonctionne pas et me renvoie une erreur du type:

Warning: unserialize() expects parameter 1 to be string, resource given in C:\Program Files\EasyPHP-5.3.1\www\selection.php on line 63
Voilà si quelqu'un peut m'aider à résoudre ce problème
Merci d'avance

Mammouth du PHP | 568 Messages

05 mars 2010, 14:19

Il te faut récupérer la ligne inscrite dans le fichier, la tu essaye de délinéariser le pointer de fichier.

Regarde du côté de file_get_contents qui renverra directement le contenu du fichier.

gui
Eléphant du PHP | 100 Messages

05 mars 2010, 15:08

Je comprend ton raisonnement seulement mon fichier est un tableau très délicat à manipuler ligne par ligne.
J'ai essayé après le "fopen" de faire un "fread", il me revoie une erreur peu explicite : Resource id #6
Quelqu'un saurait-il se que cela signifie.

gui
Eléphant du PHP | 100 Messages

05 mars 2010, 16:30

En fait c'était une erreur de frappe.
L'utilisation de fopen suivit de fread permet bien l'unserialize

Mammouth du PHP | 985 Messages

05 mars 2010, 16:36

Oui c'est un des buts principal de la fonction serialize(), je crois :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.