Page 1 sur 1

Utilisation de la fonction array_reverse

Posté : 18 avr. 2007, 11:33
par eniluap
Bonjour, je suis novice en PHP et je voudrais savoir si vous pouviez m'aider: je voudrais utiliser la fonction array_reverse mais ca ne marche pas comme je voudrais. Je vous explique
j'ai une sequence de lettre AUCG et avec la fonction array à chaque lettre je fais correspondre une autre (c'est de l'ARN pour ce qui connaisse) de la facon suivant :
$seq_result = array("A" => "U", "U" => "A","C" => "G","G" => "C");

et j'arrive a afficher la séquence complémentaire sans probleme.

Mais ce que je voudrais faire c'est afficher cette nouvelle séquence depuis la fin c'est à dire que par exemple j'ai cette séquence AACGU j'obtiens la complémentaire UUGCU et moi je voudrais ensuite afficher UCGUU

J'ai essayé en utilisant array_reverse mais il n'affiche pas la séquence UCGUU mais Array.

Comment faire?? :( :(

Merci de votre aide

Posté : 18 avr. 2007, 11:58
par charabia
Tu dois parcourir ligne par ligne ton tableau pour l'affichage sinon tu auras "array" comme résultat.
$seq_result = array("A" => "U", "U" => "A","C" => "G","G" => "C");
$seq_result_inv = array_reverse($seq_result);

while (list($key, $val) = each($seq_result_inv)) {
    echo $val;
}
Tu auras CGAU comme résultat.

Posté : 18 avr. 2007, 18:21
par eniluap
Merci pour la réponse mais ça ne correspond pas à ce que je voudrais faire (je pense que je dois mal m'exprimer :? )

voila mon script
<?php
 $seq=$_POST["sequence"];
 $org=$_POST["organisme"];
 
 print "la sequence est : $seq ";
 echo  "<p>";
 
 print "la sequence COMPLEMENTAIRE est ";

 $seq_result = array("A" => "U", "U" => "A","C" => "G","G" => "C");
echo strtr($seq, $seq_result);
echo  "<p>";
Cela marche tres bien je rentre ma séquence dans mon formulaire
si par exemple je met AAUGC j'aurais le séquence complémentaire UUAGC.

Mais moi ce que je voudrais c'est afficher cette séquence complémentaire depuis la fin c'est à dire CGAUU
et c'est là ou ca veut pas marcher comme je voudrais :cry:

la fonction array reverse ne m'affiche pas CGAUU mais CGAU
Vous avez une autre idée??
Merci en tout cas

Posté : 18 avr. 2007, 20:13
par charabia
Ahh oki désolé je n'avais pas compris. Alors tu as une fonction toute simple pour faire ce que tu veux : strrev()
$inv = strtr($seq, $seq_result);
echo strrev($inv);

Re: Utilisation de la fonction array_reverse

Posté : 18 avr. 2007, 20:30
par Hubert Roksor
j'ai cette séquence AACGU j'obtiens la complémentaire UUGCU
je met AAUGC j'aurais le séquence complémentaire UUAGC. [...] ce que je voudrais c'est [...] CGAUU
Sont-ce des typos ou ai-je mal compris l'algorithme?

Comme je l'ai compris (tout ce que je sais de l'ARN c'est que ce que je viens de voir sous Google, à savoir que c'est lié à l'ADN) on permutte les couples de lettres A et U puis G et C, puis on retourne la chaîne. Alors, AACGU devrait devenir ACGUU et AAUGC devrait devenir GCAUU.

Si c'est la cas, les deux fonctions que tu recherches sont strtr() et strrev() comme le proposait charabia.
$complementaire = strrev(strtr($sequence, 'AUGC', 'UACG'));

Posté : 18 avr. 2007, 21:27
par Hubert Roksor
Au fait, je suis tombé sur le site http://www.biophp.org
Est-ce que ça ne correspondrait pas à ce que tu recherches ?

Posté : 19 avr. 2007, 13:30
par eniluap
Merci beaucoup Charabia c'est exactement ce que je voulais

Et merci aussi Hubert Roksor pour ton site biophp ca va surement pouvoir m'aider pour la suite

Posté : 19 avr. 2007, 14:10
par Hubert Roksor
Et sinon au niveau des typos dont je parlais ?