Aide pour une transformation d'une chaine de chiffre [Résolu]

Signaler
Messages postés
3
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
9 février 2005
-
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
-
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

Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
<?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 ...
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
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é ...
Messages postés
3
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
9 février 2005

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.
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
En tout cas, si la reponse te vas, valide la ! Merci