J'ai essayé d'écrire une fonction qui va prendre un tableau de montants différents et aligner les décimales, en ajoutant la quantité appropriée de
à chaque nombre avec une longueur moindre que le nombre avec la plus longue longueur. Cependant, cela semble assez long, et je me demande si quelqu'un a un aperçu de ce que je pourrais faire est plus court et plus efficace.aligner les nombres décimaux dans le tableau des valeurs monétaires
$arr = array(12, 34.233, .23, 44, 24334, 234);
function align_decimal ($arr) {
$long = 0;
$len = 0;
foreach ($arr as &$i){
//change array elements to string
(string)$i;
//if there is no decimal, add '.00'
//if there is a decimal, add '00'
//ensures that there are always at least two zeros after the decimal
if (strrpos($i, ".") === false ) {
$i .= ".00";
} else {
$i .= "00";
}
//find the decimal
$dec = strrpos($i, ".");
//ensure there are only two decimals
//$dec+3 is the decimal plus two characters
$i = substr_replace($i, "", $dec+3);
//if $i is longer than $long, set $long to $i
if (strlen($i) >= strlen($long)) {
$long = $i;
}
}
//locate the decimal in the longest string
$long_dec = strrpos($long, ".");
foreach ($arr as &$i) {
//difference between $i and $long position of the decimal
$z = ($long_dec - strrpos($i, "."));
$c = 0;
while ($c <= $z ) {
//add a for each number of characters
//between the two decimal locations
$i = " " . $i;
$c++;
}
}
return $arr;
}
cela fonctionne okkaaay ... semble vraiment vraiment verbeux. Je suis sûr qu'il y a un million de façons de le rendre beaucoup plus court et plus professionnel. Merci pour vos idées!
c'est beaucoup plus court! Merci! – 1252748
Cela nécessite d'utiliser une police de caractères avec des chiffres à espacement fixe et un nbsp qui correspond à sa largeur. Si vous avez besoin d'aligner des nombres dans la table HTML, j'ai créé un simple plugin jQuery sans ces restrictions: https://github.com/ndp/align-column. – ndp