Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2011, 17h31   #1
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
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
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h22   #2
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
En cherchant un peu, et après quelques tests :
Code :
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');
?>
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h34   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
utilise str_split

et le coup des if c'est inutile autant faire

Code :
echo '<img src="./pictos_WMR/temperature_car23_'.$tabchaine.'.png"/>'
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h48   #4
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
Merci stealth35,

J'ai modifié comme suit :
Code :
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 ?
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h54   #5
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonsoir,

tu peux aussi faire ainsi :
Code :
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);
 
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h55   #6
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
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
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h22.


 
 
 
 
Partenaires

Hébergement Web