Aide pour une transformation d'une chaine de chiffre

Résolu
Juwau Messages postés 3 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 9 février 2005 - 8 févr. 2005 à 19:46
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 - 9 févr. 2005 à 18:59
Bonjour.



J'aurais besoin d'une petite aide.



Voila j'ai une serie de chiffre qui peut etre constituée de 2 à 6 nombres.



Exemples:

20

130

5740

58723

971547



Voila!



Je voudrais pouvoir faire ceci



20 -› 00 O 00 A 20 C


130 -› 00 O 01 A 30 C


5740 -› 00 O 57 A 40 C


58723 -› 05 O 87 A 23 C


971547 -› 97 O 15 A 47 C



D'avance, je vous remercie...



Justin

6 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
9 févr. 2005 à 00:11
<?php



function decoupe($chaine_debut,$sep=array("C","A","O")) {



$max 6; // Nombre de chiffre maximum : 20> 000020 ; 400 => 000400 ...

$chaine = sprintf("%" . sprintf("%02d", $max) . "d", $chaine_debut); // On traite ...

$nb = strlen($chaine)/2; // On compte le nombre chiffres et on divise par deux

$reste = "";





for( $i=0 ; $i<$nb ; $i++ ) {



$reste .= substr($chaine,$i*2,2);


$reste .= isset($sep[$i]) ? " " . $sep[$i] . "
" : " - " ; // On teste, si $sep existe on ajoute la lettre, sinon on
ajoute -



}



return $reste;

}



echo decoupe("20");

echo "
";

echo decoupe("130");

echo "
";

echo decoupe("5740");

echo "
";

echo decoupe("58723");

echo "
";

echo decoupe("971547");


echo "
";

echo decoupe("123456789");


echo "
";

echo decoupe("123456789",array("A","B","C","D","E"));




?>




Pas mal pour une 1er fois ...
3
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
9 févr. 2005 à 00:32
Salut!



<?php

$nb = 976;

$array_nb = array(0, 0, 0);



if( $nb < 100)

$array_nb[0] = $nb;

else if( $nb < 10000 )

{

$array_nb[0] = $nb % 100;

$array_nb[1] = ( $nb - $array_nb[0] ) / 100;

}

else if( $nb < 1000000 )

{

$r = $nb % 10000;

$array_nb[0] = $r % 100;

$array_nb[1] = ( $r - $array_nb[0] ) / 100;

$array_nb[2] = ( $nb - $r ) / 10000;

}

else

die( 'nombre trop grand' );



$nb = ( $array_nb[2] < 10 ? '0' . $array_nb[2] :
$array_nb[2] ) . ' 0 ' . ( $array_nb[1] < 10 ? '0' .
$array_nb[1] : $array_nb[1] ) . ' A ' . ( $array_nb[0] < 10 ?
'0' . $array_nb[0] : $array_nb[0] ) . ' C';

echo $nb;

?>



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
9 févr. 2005 à 00:56
OUPS,


function decoupe($chaine_debut,$sep=array("C","A","O")) {




remplace par




function decoupe($chaine_debut,$sep=array("O","A","C")) {





Dsl, j'ai inversé ...
0
Juwau Messages postés 3 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 9 février 2005
9 févr. 2005 à 10:54
Un grand grand merci pour votre aide.



J'avais fais un petit code en attendant une meilleur optimisation, je vous montre :



<?

if (strlen($x[prix]) == 3) { $prix = "00 ". substr($x[prix],0,1) ."". substr($x[prix],1,2) .""; }

if (strlen($x[prix]) == 4) { $prix = "00 ". substr($x[prix],0,2) ."". substr($x[prix],2,2) .""; }

if (strlen($x[prix]) == 5) { $prix =
substr($x[prix],0,1) ."".
substr($x[prix],1,2) ."".
substr($x[prix],3,2) .""; }

if (strlen($x[prix]) == 6) { $prix =
substr($x[prix],0,2) ."00 ".
substr($x[prix],2,2) ."".
substr($x[prix],4,2) .""; }



?>



Les images sont simplement des représentations de pieces.
0

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

Posez votre question
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
9 févr. 2005 à 11:40
Salut!

Juste dans un cas comme celui ci, je pense que tu as meilleur temps de
faire un strlen au début det de mettre le résultat dans une variable
que de le faire 4 fois...



Autrement, utilisastion de ' ' qui sont plus rapides que " "



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
9 févr. 2005 à 18:59
En tout cas, si la reponse te vas, valide la ! Merci
0
Rejoignez-nous