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
Modérateur
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
Modérateur
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
Modérateur
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