Utilisation de la fonction array_reverse

eniluap
Invité n'ayant pas de compte PHPfrance

18 avr. 2007, 11:33

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

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 avr. 2007, 11:58

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.

eniluap
Invité n'ayant pas de compte PHPfrance

18 avr. 2007, 18:21

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

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 avr. 2007, 20:13

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);

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 avr. 2007, 20:30

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'));
Modifié en dernier par Hubert Roksor le 19 avr. 2007, 14:09, modifié 1 fois.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 avr. 2007, 21:27

Au fait, je suis tombé sur le site http://www.biophp.org
Est-ce que ça ne correspondrait pas à ce que tu recherches ?

eniluap
Invité n'ayant pas de compte PHPfrance

19 avr. 2007, 13:30

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

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

19 avr. 2007, 14:10

Et sinon au niveau des typos dont je parlais ?