Aller au contenu
JoP

"conversion" des variable en chiffres

Noter ce sujet :

Recommended Posts

Bonjour...

je voudrais savoir s'il est possible de faire un boucle pour changer les lettres en chiffres....

je m'explique => J'ai une variable array qui contient des lettres (une par "case") et je voudrais faire une boucle qui agit comme suit:

Si $mavariable[0] = a

$mavariable[0] = 2

Si $mavariable[1] = d

$mavariable[1] = 25

etc....

merci a l'avance

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, tu as plusieurs solutions :

Soit tu détermines à l'avance le rapport entre les chiffres et les lettres, auquel cas ca donnerait :

$mavariable[0]['chiffre'] = "a";
$mavariable[0]['lettre'] = "2";
$mavariable[0]['chiffre'] = "d";
$mavariable[0]['lettre'] = "25";

Soit tu as 2 tableaux linéaires, auxquels cas tu peux les faire passer dans une boucle :

$xx=0;
foreach($mavariable as $k =>$v){
$mavariable[$k] = $xx*facteur_a_determiner1;
$xx += facteur_a_determiner2;
}

En imaginant qu'il y ait une relation entre les 2...

Partager ce message


Lien à poster
Partager sur d’autres sites

Je te remercie Anonymus, mais pourrais-tu être un peu plus explicite dans tes explications...

merci

et oui; il y a une relation entre les 2... C'est que je veux que quand l'utilisateur entre son nom, il se transforme en un nombre. et je veux atteindre ce nombre en additionnant les lettres du nom; mais on le sais tous; des lettres, ça ne s'additionne pas...

alors je veux les tranformer en chiffre

ça peut parraitre inutile comme ça, mais l'usage que j'en fait; ça ne l'est pas

merci encore

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans ce cas, il te faut la liste de toutes les lettres, et leur équivalent en nombres. Tu prendras des nombres d'au moins 2 caractères, pour couvrir toutes les lettres.

$a = "10";
$b = "11";
$c = "12";
$d = "13";
$e = "14";
$f = "15";
//...
$o = "25";
$u = "43";

$test = "coucou";

$test_nb = "";

for($xx=0;$xx<strlen($test);$xx++)
$test_nb .= $$test[$xx];

echo $test_nb;

Ensuite, tu créées une boucle, qui va appeler le mot (coucou en l'occurence), et qui va chercher pour chaque lettre de coucou l'équivalent en variable.

Ainsi, tu fais appel aux variables dynamiques ($$) ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Si c'est pour créer une clé de stockage, pense aussi aux fonctions md5(), crc32() ou sha1().

Elles peuvent te rendre service et simplifier ton programme.

Dan

Partager ce message


Lien à poster
Partager sur d’autres sites

function chartoint($char)
{
return ord($char);
}

array_map('chartoint',$ton_tableau);

array_map permet d'appliquer une fonction à tous les éléments d'un tableau, ord retourne la valeur ascii d'un caractère, si tu souhaites gérer plus que les caractères ascii, il suffit de changer la fonction chartoint.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Anonymus, ça fontcionne, mais le script ne me renvoie pas les bon nombre avec les bonnes lettres

Merci

****EDIT**** Finalement, laissez faire, j'ai trouver le problème... J'ai changé $test_nb pour $test_nb[]... Les nombres sont ainsi enregistré dans une $ array...

Merci encore

Modifié par JoP

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, mais ta méthode ne permet pas de dire si le nombre : 111

est égal à 'ak' ou 'ka' :/

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Anonymus...

mais je veux seulement changer les lettres en chiffre et non le contnraire, donc je n'ai pas besoin de cela...

mais j'ai rencontré un problème... quand j'entre un mot de, par exemple, 8 lettres, et que j'affiche la fonction print_r($test_nb), il écrit seulement les 5 premier nombres... il en manque donc 3; j'ai besoin d'aide

merci d'avance

Partager ce message


Lien à poster
Partager sur d’autres sites

Postes nous l'intégralité de ton code (enfin.. celui qui fait la conversion.) pour y voir plus clair.

Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

 $montexte=$_POST['test'];
for ($boucle=0; $boucle < strlen($montexte); $boucle++)
{
$unparun[]=substr($montexte,$boucle,1);
}
print_r($unparun);


$a = "10";
$b = "11";
$c = "12";
$d = "13";
$e = "14";
$f = "15";
$g = "16";
$h = "17";
$i = "18";
$j = "19";
$k = "20";
$l = "21";
$m = "22";
$n = "23";
$o = "25";
$p = "26";
$q = "27";
$r = "28";
$s = "29";
$t = "30";
$u = "31";
$v = "32";
$w = "33";
$x = "34";
$y = "35";
$z = "36";


$test_nb =

for($boucle=0; $boucle < strlen($unparun); $boucle++)
{
$test_nb[] .= $$unparun[$boucle];
}

print_r($test_nb);

Voila

Partager ce message


Lien à poster
Partager sur d’autres sites

Comme ceci :

$montexte="ceciestsuntest";
for ($boucle=0; $boucle < strlen($montexte); $boucle++){
$unparun[]=${substr($montexte,$boucle,1)};
}

print_r($unparun);

qui revient au même que :

for($xx=0;$xx<strlen($montexte);$xx++)
$unparun[] .= $$montexte[$xx];

print_r($unparun);

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Anonymus

finalement j'ai trouvé une facon d'arriver a ce que je voulais -> j'ai simplement enlever la boucle For d'en haut et tout fonctionne a merveille

merci encore

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×