IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Décomposer nombre en chiffres puis afficher images


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut Décomposer nombre en chiffres puis afficher images
    Bonjour à tous,

    Je cherche à faire une fonction php qui me permette de décomposer un nombre pour l'afficher en images.

    Mon nombre est de la forme suivante : -00.0 avec ou sans le moins devant en fonction de ma température si elle est négative ou pas.

    Par contre il faut commencer par la droite car on peut avoir 0.0

    Image pour le caractère 1 :
    - car1_moins
    - ou rien

    Images pour les caractères 2 et 3 :
    - car23_0
    - car23_1
    - car23_2
    - car23_3
    - car23_4
    - car23_5
    - car23_6
    - car23_7
    - car23_8
    - car23_9
    - car23_na

    Images pour le caractère 4 (décimale) :
    - car4_0
    - car4_1
    - car4_2
    - car4_3
    - car4_4
    - car4_5
    - car4_6
    - car4_7
    - car4_8
    - car4_9
    - car4_na

    Merci pour votre aide.
    Mikael

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    En cherchant un peu, et après quelques tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    <head>
    <?php
     
     
        function decoupeChaineEnImages($chaineADecouper)
        {
    	$modif = str_replace (",","", $chaineADecouper);
     
    	$tabchaine = substr($modif,-3,1); 
    	if( $tabchaine == 0 ) echo '<img src="./pictos_WMR/temperature_car23_0.png"/>';
    	if( $tabchaine == 1 ) echo '<img src="./pictos_WMR/temperature_car23_1.png"/>';
    	if( $tabchaine == 2 ) echo '<img src="./pictos_WMR/temperature_car23_2.png"/>';
    	if( $tabchaine == 3 ) echo '<img src="./pictos_WMR/temperature_car23_3.png"/>';
    	if( $tabchaine == 4 ) echo '<img src="./pictos_WMR/temperature_car23_4.png"/>';
    	if( $tabchaine == 5 ) echo '<img src="./pictos_WMR/temperature_car23_5.png"/>';
    	if( $tabchaine == 6 ) echo '<img src="./pictos_WMR/temperature_car23_6.png"/>';
    	if( $tabchaine == 7 ) echo '<img src="./pictos_WMR/temperature_car23_7.png"/>';
    	if( $tabchaine == 8 ) echo '<img src="./pictos_WMR/temperature_car23_8.png"/>';
    	if( $tabchaine == 9 ) echo '<img src="./pictos_WMR/temperature_car23_9.png"/>';
     
    	$tabchaine = substr($modif,-2,1); 
    	if( $tabchaine == 0 ) echo '<img src="./pictos_WMR/temperature_car23_0.png"/>';
    	if( $tabchaine == 1 ) echo '<img src="./pictos_WMR/temperature_car23_1.png"/>';
    	if( $tabchaine == 2 ) echo '<img src="./pictos_WMR/temperature_car23_2.png"/>';
    	if( $tabchaine == 3 ) echo '<img src="./pictos_WMR/temperature_car23_3.png"/>';
    	if( $tabchaine == 4 ) echo '<img src="./pictos_WMR/temperature_car23_4.png"/>';
    	if( $tabchaine == 5 ) echo '<img src="./pictos_WMR/temperature_car23_5.png"/>';
    	if( $tabchaine == 6 ) echo '<img src="./pictos_WMR/temperature_car23_6.png"/>';
    	if( $tabchaine == 7 ) echo '<img src="./pictos_WMR/temperature_car23_7.png"/>';
    	if( $tabchaine == 8 ) echo '<img src="./pictos_WMR/temperature_car23_8.png"/>';
    	if( $tabchaine == 9 ) echo '<img src="./pictos_WMR/temperature_car23_9.png"/>';
     
    	echo '<img src="./pictos_WMR/temperature_virgule.png"/>';
     
        $tabchaine = substr($modif,-1,1); 
    	if( $tabchaine == 0 ) echo '<img src="./pictos_WMR/temperature_car4_0.png"/>';
    	if( $tabchaine == 1 ) echo '<img src="./pictos_WMR/temperature_car4_1.png"/>';
    	if( $tabchaine == 2 ) echo '<img src="./pictos_WMR/temperature_car4_2.png"/>';
    	if( $tabchaine == 3 ) echo '<img src="./pictos_WMR/temperature_car4_3.png"/>';
    	if( $tabchaine == 4 ) echo '<img src="./pictos_WMR/temperature_car4_4.png"/>';
    	if( $tabchaine == 5 ) echo '<img src="./pictos_WMR/temperature_car4_5.png"/>';
    	if( $tabchaine == 6 ) echo '<img src="./pictos_WMR/temperature_car4_6.png"/>';
    	if( $tabchaine == 7 ) echo '<img src="./pictos_WMR/temperature_car4_7.png"/>';
    	if( $tabchaine == 8 ) echo '<img src="./pictos_WMR/temperature_car4_8.png"/>';
    	if( $tabchaine == 9 ) echo '<img src="./pictos_WMR/temperature_car4_9.png"/>';
        }
    ?>
    </head>
     
    <?php
    echo decoupeChaineEnImages('12345,6');
    ?>

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    utilise str_split

    et le coup des if c'est inutile autant faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="./pictos_WMR/temperature_car23_'.$tabchaine.'.png"/>'

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Merci stealth35,

    J'ai modifié comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
        function decoupeChaineEnImages($chaineADecouper)
        {
     
    	$modif = str_replace (",","", $chaineADecouper);
     
    	$long = strlen($modif);
     
    	if($long >= 4 ) {
    		$tabchaine = substr($modif,-4,1);
    		if( $tabchaine == '-' ) echo '<img src="./pictos_WMR/temperature_car1_moins.png"/>';
    	}
     
    	if($long >= 3 ) {
    		$tabchaine = substr($modif,-3,1); 
    		$tabchaine2 = substr($modif,0,1);	
    		if( $tabchaine2 == '-' ) {
    			if( $tabchaine == '-' ) echo '<img src="./pictos_WMR/temperature_car1_moins.png"/>';
    		}
    		else {
    			if( $tabchaine == '' ) echo '<img src="./pictos_WMR/temperature_car23_na.png"/>';
    			if( $tabchaine <> '' ) echo '<img src="./pictos_WMR/temperature_car23_'.$tabchaine.'.png"/>';
    		}
    	}
     
    	$tabchaine = substr($modif,-2,1); 
    	echo '<img src="./pictos_WMR/temperature_car23_'.$tabchaine.'.png"/>';
     
     
    	echo '<img src="./pictos_WMR/temperature_virgule.png"/>';
     
    	$tabchaine = substr($modif,-1,1); 
    	echo '<img src="./pictos_WMR/temperature_car4_'.$tabchaine.'.png"/>';
     
        }
    A quoi sert str_split ?

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    tu peux aussi faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
     
    function decoupe($chaine) {
       $len       = strlen($chaine);
       $isDecimal = false;
       $images    = array();
     
       for($i = 0; $i < $len; ++$i) {
          $char = $chaine[$i];
          if ($char === '-') {
             $images[] = 'car1_moins';
          }
          else
          if (($char === ',') || ($char === '.')) {
             $images[] = 'virgule';
             $isDecimal = true;
          }
          else
          if (is_numeric($char)) {
             $images[] = ($isDecimal) ? "car4_$char" : "car23_$char";
          }
       }
     
       // si pas de décimale trouvée on termine toujours par .0
       if ( ! $isDecimal) {
          $images[] = 'virgule';
          $images[] = 'car4_0';
       }
       return $images;
    }
     
    $images = decoupe('-68,0');
    array_map(function ($image) { echo '<img src="./pictos_WMR/temperature_'.$image.'.png" />'; }, $images);
     
    ?>

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par mikael2235 Voir le message
    A quoi sert str_split ?
    A découper une chaine en élements de longueurs prédéfinies.
    Regardes ici

Discussions similaires

  1. afficher image puis texte (header)
    Par JokerAs dans le forum Langage
    Réponses: 2
    Dernier message: 06/07/2014, 18h29
  2. Nombre de chiffres affichés
    Par binome-x dans le forum MATLAB
    Réponses: 7
    Dernier message: 23/11/2012, 17h27
  3. Réponses: 2
    Dernier message: 16/05/2012, 09h36
  4. forcer le nombre de chiffres à afficher
    Par vlebourl dans le forum R
    Réponses: 4
    Dernier message: 16/08/2011, 10h14
  5. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo