fonction pour séparer un nombre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction pour séparer un nombre

par lkaiman » 03 déc. 2007, 16:12

pas sur, mais je crois avoir essayé str_split ()
et que çà me mettait une fatal_error, fonction inconnu

Mais bon, çà marche, c'est le principal

par Hubert Roksor » 03 déc. 2007, 15:57

@Calimero : euh, c'est moi ou ton truc fait un
function lolwut($str)
{
    return str_split($str, 1);
}
:?:

Note : sous PHP4 il vous faut PHP_Compat, mais ce qu'il vous faut surtout, c'est changer d'hébergeur; même Free est en PHP5

par Truc » 03 déc. 2007, 15:49

Modération :
lkaiman, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par lkaiman » 03 déc. 2007, 15:18

Yesssssssss

c'est bon çà marche

merci pour vos réponses

bonne journée ;)

voir le résultat la: http://iup.geii.free.fr/

j'ai modifié presque tout les modules, et mis ma touche personnelle, merci a vous pour le compteur ;)

par Calimero » 03 déc. 2007, 15:07

Voici non pas une, mais deux fonctions qui feront le boulot. A toi de voir celle que tu préfères ou que tu comprends le mieux, les deux marchent :-) )

Elles attendent deux paramètres : le premier est le nombre à découper. Le deuxième est un booléen qui te permet de mettre à l'envers le résultat (Si tu souhaites avoir le chiffre des centaines de milliers en premier dans le tableau de résultat par exemple, et non pas le chiffre des unités... C'est souvent mieux pour l'afficher dans le sens de lecture).


function split_number_bynum($number,$reverse=true){
	if($reverse) $number=strrev($number);

	$chiffres=array();

	$numbercopy=$number;
	while($numbercopy>=10){
		$chiffres[]=$lastchiffre=$numbercopy%10;
		$numbercopy=($numbercopy-$lastchiffre)/10;
	}
	$chiffres[]=$numbercopy;

	return ($chiffres);
}


function split_number_bystring($number,$reverse=true){
	if($reverse) $number=strrev($number);

	$chiffres=array();

	$numbercopy=$number;
	while(strlen($numbercopy)>1){
		$chiffres[]=substr($numbercopy,-1,1);
		$numbercopy=substr($numbercopy,0,strlen($numbercopy)-1);
	}
	$chiffres[]=$numbercopy;

	return ($chiffres);
}
Dans les deux cas, voici ce que tu obtiens :
$number=945647872;
$chiffres=split_number_bystring($number,true);
print_r($chiffres);

Code : Tout sélectionner

Array ( [0] => 9 [1] => 4 [2] => 5 [3] => 6 [4] => 4 [5] => 7 [6] => 8 [7] => 7 [8] => 2 )

par lkaiman » 03 déc. 2007, 15:07

$LesLignes3 = file(Win2UnixShlash(dirname(__FILE__).'\modules\compteur\cpt_compteur.php'));
$nbint = count($LesLignes3)-1;
$nb = strval($nbint);
				
for($i=0 ; $i<=(strlen($nb)-1) ; $i++)
	{echo '<img src="/modules/compteur/img/'.$nb[$i].'.gif" alt="Nombre de Visiteurs" title"Nombre de Visiteurs" />';}
(j'ai viré ce qu'il ne nous intéresse pas...

en faisant comme çà, çà me fait pareil, que le alt d'afficher (2 fois car $nb=23)

par d0m » 03 déc. 2007, 15:00

attention, il faut travailler sur une chaine de caractère, toi tu travaille sur des entiers (résultat de la fonction count) :
$nb = count($LesLignes3)-1; 
avant de pouvoir récupérer ses différents chiffres, il faut le convertir en chaine de caractère.
Par exemple en utilisant la fonction strval

par lkaiman » 03 déc. 2007, 14:46

j'ai aussi essayé avec la fonction substr(variable_de_recherche, départ, fin)

mais çà me fait pareil, çà m'affiche que les alt

par lkaiman » 03 déc. 2007, 14:39

merci

j'ai tester tout çà, mais çà marche pas (ou j'ai fait une erreur :P)

je vous montre mon bout de code:
<?php						
	if (file_exists(Win2UnixShlash(dirname(__FILE__).'\modules\compteur\cpt_compteur.php')))
	{		  
		$LesLignes3 = file(Win2UnixShlash(dirname(__FILE__).'\modules\compteur\cpt_compteur.php'));
      		$nb = count($LesLignes3)-1;
				
		echo '<a href="/dirsys/modules/compteur.php" target="main">';
		for($i=0 ; $i<=(strlen($nb)-1) ; $i++)
			{echo '<img src="/modules/compteur/img/'.$nb[$i].'.gif" alt="Nombre de Visiteurs" title"Nombre de Visiteurs" />';}
		echo'</a>';
	}
?>
Si j'ai 21 dans $nb, il affiche bien 2 images, mais il m'affiche pas les images, il m'affiche le alt.
Donc je dois avoir une erreur dans mes variable $nb et $i dans mon img src

Je vois plus, vous voyez vous ???

par Ryle » 03 déc. 2007, 12:35

En complément de ce qu'a dit d0m, avec php, chaque chaine est considérée comme un tableau.
Ainsi, si une variable contient la chaine "azerty", tu peux accéder à chacune des lettres en spécifiant son index comme tu le ferais pour un tableau :
$var = "azerty";
echo $var[0]; // afficher "a"
echo $var[1]; // afficher "z"
...
Tu peux ainsi boucler sur chacune des lettres (et dans ton cas des chiffres) pour les extraire et effectuer le traitement souhaité :)

par d0m » 03 déc. 2007, 12:29

Salut,

Tu peux utiliser le nombre comme une chaine de caractères.
Ensuite grace aux fonctions sur les chaines, tu peux récupérer chaque caractère et donc chaque chiffre.

fonction pour séparer un nombre

par lkaiman » 03 déc. 2007, 11:56

Bonjour a tous

voila, j'aimerais créer un bout de code pour que aprés avoir récupérer le nombre de ligne dans un fichier je puisse séparer ce nombre en unité dizaine centaine ...

Pour n'avoir qu'un seul chiffre a chaque fois et ainsi utiliser ces chiffre séparement pour affichier un gif différent

-> pour afficher sur ma page principal le nombre de visiteur

Si vous avez une méthode courte
car j'ai bien penser a faire plusieurs cas:

si nb<10000
diviser par 1000 et on a le 4ieme nb
modulo de nb puis divisé par 100 poru avoir le 3ieme nb
...
Si nn <1000
...

mais çà va être long :P