2010-12-12 6 views
1

je reçois l'erreur suivante lorsque je tente d'utiliser le format numérique en php:php number_format() où la chaîne de formattage est une variable

Remarque: une valeur numérique non bien formé a rencontré

$number = 10345.34543; 
$format = "0, ',', '.'"; 
echo number_format($number, $format); 

Je suis presque positif c'est parce que je tiens la partie de formage dans une corde, mais y a-t-il un moyen de contourner cela?

Merci.

+1

[Lire] (http://php.net/manual/fr/function.number-format.php). Les réponses sont là. Vous utilisez complètement la fonction. – meagar

Répondre

1

Le format dans lequel vous essayez de transmettre les arguments n'est pas possible. Vous passez une chaîne au lieu d'un int.

Les expected parameters sont:

string number_format (float $number , 
         int $decimals = 0 , 
         string $dec_point = '.' , 
         string $thousands_sep = ',') 

vous devrez passer les arguments en conséquence:

echo number_format($number, 0, ",", "."); 

Si vous avez une raison particulière de le faire de la façon dont vous présentez, vous devez utiliser eval() qui est fortement déconseillée, ou peut-être call_user_func_array() mais vous devrez expliquer en détail d'abord ce que vous essayez de faire.

+0

Ma raison pour cela est que je voudrais stocker le format dans la base de données. $ format est en fait une chaîne que je reçois de ma base de données. Quel serait le meilleur moyen d'y parvenir? – David

+0

@David Je stockerais les valeurs séparément, ou utiliserais quelque chose comme 'sprintf()' qui permet de stocker un modèle de format '#. ##' sans les implications de sécurité –

+0

@David juste les stocker séparément, idiot. –

Questions connexes