Problème Array

Résolu
nashoy Messages postés 125 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 7 octobre 2006 - 3 janv. 2006 à 13:33
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 3 janv. 2006 à 17:05
Bonjour à tous,

Je me suis créé une petite fonction qui permet de crypter une chaine donnée :

function crypte($chaine_envoi,&$crypted,&$tableau){
$crypte_maj = array('.20.','.21.','.22.','.23.','.24.','.25.','.26.','.15.','.16.','.17.','.18.','.19.','.10.','.11.','.12.','.13.','.14.','.1.','.2.','.3.','.4.','.5.','.6.','.7.','.8.','.9.');
$lettres_maj = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
$chaine_envoi = split(';',$chaine_envoi);


for($i=0;$i<sizeof($chaine_envoi);$i++)
{
$crypted = str_replace($lettres_maj, $crypte_maj, $crypted);
$tableau array($chaine_envoi[$i]> $crypted[$i]);
}}

Ensuite je fais ceci :

crypte("MOT;BLABLA",$crypted,$tableau);

donc dans l'array "$crypte" il me rend tout, alors je fais:
for($i=0;$i<sizeof($crypted);$i++)
{
echo $crypted[$i];
}

Et là il m'affiche MOT et BLABLA crypté

Par contre si je fais

foreach($tableau as $cle=>$valeur)
{
echo $cle.' : '.$valeur.'
';
}

Il ne m'affiche que (et pas MOT)
BLABLA : .21..19..20..21..19..20.

Donc si je fais simplement
echo $tableau['MOT']; , il dit qu'il ne trouve pas..(il faut croire qu'il l'écrase)

Si quelqu'un voit l'erreur, merci beaucoup !!

nashoy

7 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
3 janv. 2006 à 17:05
Bah dans une fonction de cryptage, tu as juste à récupérer le mot de passe crypté généralement.
Autrement, tu peux faire un return avec un tableau :

return array ('premiere valeur' => $x, 'seconde valeur' => $y, 'troisieme valeur' => $z);

Et pour récupérer ca :
$array = ta_fonction();

echo $array['premiere valeur'];
echo $array['seconde valeur'];
etc...
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 janv. 2006 à 13:54
Hello,

et il y a quoi, avant l'appel, dans $crypted et $tableau...?

De plus ton script comporte d'emblée des erreurs.
Déjà, tu devrais sortir ton sizeof() de l'expression du for.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
3 janv. 2006 à 14:01
Heu pour rappel :

function truc {
$x = 'machin';
}

truc();
echo $x; // Erreur, variable $x non défini.

Par contre :

function truc {
$x = 'machin';
return $x;
}
$str = truc();
echo $str; // Affiche bien 'machin'.

Commence déja par comprendre ca, car tu n'as aucune valeur de retour dans ta fonction.
Voila pourquoi ca ne marche pas.

Ah si d'accord, tu passes $crypted et $tableau par référence et non par copie... choix très mauvais car tu ne déclares même pas ces variables dès le début.

Je te conseil de revoir un peu l'organisation de ta fonction avant toute chose :o
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 janv. 2006 à 14:16
Il doit y avoir qque chose dans ces variables, sinon le script planterait au str_replace (). Enfin, il ne remplirait rien avec rien, plutôt ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
3 janv. 2006 à 14:20
$tableau = array($chaine_envoi[$i] => $crypted[$i]);

De toute facon, son tableau se fait écraser à chaque itération de la boucle... alors bon :o
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 janv. 2006 à 14:24
De toutes façons, le code est à revoir en intégralité de toutes évidences, voui ;-)
0
nashoy Messages postés 125 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 7 octobre 2006
3 janv. 2006 à 15:26
Merci pour les réponses.
Il est vrai que je n'avais pas vraiment compris le passage de variable entre différentes fonction, mais vu ça marchait toujours par référence ..
@FhX: Je ne connaissais pas cette manière, elle me parait interessante, par contre comment faire si j'ai plusieurs variables à extraire de la fonction ? (donc pas 1 seule comme dans ton exemple)

Je me doute bien que mon code est quelque peu bourin, mais vu que je ne voyais pas trop comment faire, j'ai essayé et ça a fini comme ceci..
Quel serait le code propre pour ma fonction ?

Merci

nashoy
0
Rejoignez-nous