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
)
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).
[php]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);
}
[/php]
Dans les deux cas, voici ce que tu obtiens :
[php]$number=945647872;
$chiffres=split_number_bystring($number,true);
print_r($chiffres);[/php]
[code]Array
(
[0] => 9
[1] => 4
[2] => 5
[3] => 6
[4] => 4
[5] => 7
[6] => 8
[7] => 7
[8] => 2
)[/code]