Problème incrémentation décrémentation alpha

edouard8053
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 8
Inscription: 15 Aoû 2008

Problème incrémentation décrémentation alpha

Message le Lun Aoû 18, 2008 20:15

Bonjour,

J'ai un petit problème, j'ai voulu incrémenter une chaine de caractère en php et j'ai utilisé la syntaxe suivante :

$mot = "mot";
echo ++$mot;

Et ça m'affiche "mou" donc l'incrémentation alpha fonctionne

Par contre j'ai voulu faire la chose suivante pour décrémenter une chaine de caractère :
echo --$mot;

mais ça ne fonctionne pas.

Est ce que vous connaissez un moyen d'arriver à faire une décrémentation de chaine de caractère ?

Merci pour votre aide


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Mar Aoû 19, 2008 9:18

Décrémenter une chaine de caractère oO

++ est toléré mais -- non, a moins de travailler sur les valeur HEXA et faire sa propre fonction tu n'a pas de solutions miracles.
Le mieux étant de passer via des tableaux.

C'est pour faire quoi cette décrémentation incrémentation?

Info là : http://www.phpfrance.com/forums/voir_reponse-259162.php


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3974
Inscription: 16 Nov 2004

Message le Mar Aoû 19, 2008 14:41



ya pas la solution sur ton lien ..

ca m'a amuser :

Code: Tout sélectionner
<?php

$tab_alphabet = array("a","b","c","d","e","f","g","h","i","j","k","m","n","o",
                      "p","q","r","s","t","u","v","ww","x","y","z");
$mot = "mot";
$size = strlen($mot);
$lettre = $mot[$size-1];
// exception
if ($lettre=='a')
echo substr($mot, 0, -1).'z';
elseif (in_array ($lettre,$tab_alphabet)) {
$key = array_search($lettre, $tab_alphabet);
echo substr($mot, 0, -1).$tab_alphabet[$key-1];
}
?>


affiche -->> "mos"

++
KOogar


RiPSO
WRInaute passionné
WRInaute passionné
 
Messages: 1591
Inscription: 4 Oct 2007

Message le Dim Aoû 31, 2008 0:53

@KOogar: Il manque un truc a ta fonction je crois. A première vue quand elle décrémente "a" ça donne "z" mais ça ne décrémente pas le caractère n-1... Et tu as mis 2x "w" :)

@edouard8053: Euh... tu veux du simple ou de l'usine à gaz?? :mrgreen:

Voila ma super fonction de gros bourrin pas optimisée du tout. Je tiens a préciser que je ne comprend toujours pas l'intérêt d'une telle fonction mais bon... tout le monde voit midi sur sa montre...

1/Eviter de lancer le script (c'est une boucle) avec un mot de + de 4 lettres :mrgreen: (ne pas essayer avec "google" par exemple, j'ai déjà testé et c'est une mauvaise idée :mrgreen:
2/ la fonction ne prend en compte que les caractères alphabétiques en minuscules.


Code: Tout sélectionner
<?

function dec_string($txt,$offset) {
   $swp=ord(substr($txt,$offset,1));
   if ($swp>122) $swp=122;
   if ($swp<=97) {
      if ($offset>0) {
            $swp2=substr($txt,0,$offset).chr(122);
            if ($offset<(strlen($txt)-1)) $swp2.=substr($txt,$offset-strlen($txt)+1);
            $ret=dec_string($swp2,$offset-1);
      } else {
         if ($swp>97) {
            $ret=substr($txt,0,$offset).chr($swp-1);
            if ($offset<(strlen($txt)-1)) $ret.=substr($txt,$offset-strlen($txt)+1);
         } else {
            $ret=$txt;
         }
      }
   } else {
      $ret=substr($txt,0,$offset).chr($swp-1);
      if ($offset<(strlen($txt)-1)) $ret.=substr($txt,$offset-strlen($txt)+1);
   }
   return $ret;
}

$letexte="sos";
$endtexte="";
for ($i=0;$i<strlen($letexte);$i++) { $endtexte.="a"; }
echo $letexte." => ".$endtexte."<br/>";

while ($letexte<>$endtexte) {
   $letexte=dec_string($letexte,strlen($letexte)-1);
   echo $letexte."<br/>";
}

?>


Résultat :

sos => aaa
sor
soq
sop
soo
son
som
sol
sok
soj
soi
soh
sog
sof
soe
sod
soc
sob
soa
snz
sny
snx
snw
snv...
...
...


Dis moi au moins a quoi ca va te servir stp que je n'ai plus l'impression que j'ai perdu un quart d'heure de ma vie a sortir un code bien crado comme celui là :lol:


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité