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

Nouveau WRInaute
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
 
WRInaute accro
Bacteries a dit:

ya pas la solution sur ton lien ..

ca m'a amuser :

Code:
<?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
 
WRInaute impliqué
@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:
<?

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:
 
Discussions similaires
Haut