Trouver plusieurs chaîne différentes dans une séquence...

pinoche29
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 11:59

Ca m'affiche toujours "print_r (Array)" :'(

Eléphant du PHP | 428 Messages

13 mai 2010, 13:45

Ca m'affiche toujours "print_r (Array)" :'(
C'est pas possible, tu as un problème de configuration de php ou autre mais personnellement j'ai testé et ça fonctionne.

Es tu sur que tu ne fais pas : echo print_r ($tableau) ?????
Si c'est le cas, l'erreur est là ;)

pinoche29
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 14:21

Ah ouiiiiiii !! Merci ça marche !! lol

Par contre c'est obligé que tous les Array => (0) etc s'affichent ?
Et si je veux utiliser les séquences trouvées, sans savoir combien il y en a, comment j'appelle la variable ? $tableau($) ? lol

Eléphant du PHP | 428 Messages

13 mai 2010, 14:37

Le print_r affiche tout ce qu'il y a dans la variable $tableau.
Un tableau (array) peut contenir plusieurs tableaux.

Ainsi pour afficher seulement le premier résultat de l'array, tu dois faire un : echo $tableau[0][0]
Les autres donnés du tableau se récupérant sous la forme $tableau[0][1] à $tableau[0][xx] (xx est un chiffre).

Ainsi, nous pouvons procéder à la récupération des données automatisée par le biais de la fonction foreach:
http://www.manuelphp.com/php/control-st ... oreach.php

Exemple :
// On crée la chaine avec les orf et brins d'adn
$adn = 'CCUAUGAGAACGUCGGUCUAGUCCCCUAUGAGAACGUCGGUCUAGUCCCCUAUGAGAACGUCGGUCUAGUCCCCUAUGAGAACGUCGGUCUAGUCC';

// On filtre les résultats
preg_match_all('/AUG(?:[ACGU]{3}(?<!UAG))+UAG/u', $adn, $tableau);

// On boucle dans les résultats pour obtenir les brins d'adn liés
foreach ($tableau[0] as &$value) {

// On affiche les résultats (mais on peut aussi faire autrechose: traiter les résultats)
echo $value.'<br />';

}
A+ ;)

pinoche29
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 19:10

J'ai juste une dernière petite question et je vous laisse tranquille (enfin je crois lol), est ce que dans le code que vous m'avez donné ça permet que la chaîne qu'il y a avant AUG soit multiple de 3 ?

Pour pas me retrouver dans la situation où il va me ressortir ça :
AUU GCA UGC AGC AAA GCC CGC...

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 19:14

J'ai juste une dernière petite question et je vous laisse tranquille (enfin je crois lol), est ce que dans le code que vous m'avez donné ça permet que la chaîne qu'il y a avant AUG soit multiple de 3 ?

Pour pas me retrouver dans la situation où il va me ressortir ça :
AUU GCA UGC AGC AAA GCC CGC...
oui :wink:

pinoche29
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 19:19

Alors merci bcp bcp bcp bcp, vous m'avez sauvé la vie là. lol :)

Et en fait j'ai un dernier tout petit truc... Comment je fais pour qu'il y ait des espaces entre chaque orf quand je mets "echo $value" comme me l'a montré visualight ?

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 19:23

Alors merci bcp bcp bcp bcp, vous m'avez sauvé la vie là. lol :)

Et en fait j'ai un dernier tout petit truc... Comment je fais pour qu'il y ait des espaces entre chaque orf quand je mets "echo $value" comme me l'a montré visualight ?
avec chunk_split
echo chunk_split($str, 3, ' ');

pinoche29
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 19:34

Non mais je veux dire entre les différentes chaînes qu'il a trouvé, pas tous les 3 caractères...

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 19:43

Non mais je veux dire entre les différentes chaînes qu'il a trouvé, pas tous les 3 caractères...
ah oui,
echo implode(' ', $matches[0]);

pinoche29
Invité n'ayant pas de compte PHPfrance

13 mai 2010, 22:12

Alors maintenant il m'écrit "implode(' ', )" xD
Rohlala je suis dsl, je suis vraiment une quiche de l'informatique moi.

Eléphant du PHP | 428 Messages

13 mai 2010, 23:07

Alors maintenant il m'écrit "implode(' ', )" xD
Rohlala je suis dsl, je suis vraiment une quiche de l'informatique moi.
Si tu utilises le code suivant : preg_match_all('/AUG(?:[ACGU]{3}(?<!UAG))+UAG/u', $adn, $tableau);
Tu dois faire : echo implode(' ', $tableau[0]);

Es-ce le cas ? As tu pensé à modifier ce qu'il fallait ?

Quidquid discis, tibi discis ====> http://php.net/manual/fr/function.implode.php

ViPHP
ViPHP | 5462 Messages

13 mai 2010, 23:29

Alors maintenant il m'écrit "implode(' ', )" xD
Rohlala je suis dsl, je suis vraiment une quiche de l'informatique moi.
montre tout ton code
t'as bien mis <?php et pas <?

pinoche29
Invité n'ayant pas de compte PHPfrance

14 mai 2010, 14:37

Oui j'ai bien mis <?php je vous copie que le petit bout du code parce que mon truc en entier fait 575 lignes ^^' lol.

Code : Tout sélectionner

if ($orf=="oui") { $longsequence = strlen("$arn"); preg_match_all('/AUG(?:[ACGU]{3}(?<!UAG))+UAG/u', $arn, $tableau); foreach ($tableau[0] as &$value); echo "<br/><br/><div id='orf'><h1>ORF : </h1>ORF obtenus : $value<br/><br/>";

ViPHP
ViPHP | 5462 Messages

14 mai 2010, 14:41

ou tu veux mettre les espaces ducoup ?