1
votes

Laravel - Comment convertir mille virgules en nombre décimal

J'ai une devise sous forme de saisie avec un format comme celui-ci 1000,00

et je veux enregistrer dans la base de données au format décimal comme 1000,00

comment le changer dans le contrôleur, une fois enregistré, il deviendra automatiquement format décimal?

$num = '3,500.20';
$formattedNum = number_format($num,  3, '', '');
echo $formattedNum;

le code ci-dessus est converti en 3000 et non en 3500.20


3 commentaires

avez-vous essayé $ result = str_replace (',', '', $ num); ?


Utilisez JavaScript pour vérifier d'abord le formulaire et invitez l'utilisateur à indiquer le format d'entrée correct. De cette façon, vous ne jouez pas avec les entrées des utilisateurs. Vous devez toujours vérifier à nouveau en PHP mais il vaut mieux demander à l'utilisateur un format correct que d'essayer de l'analyser correctement


remplacez la virgule par du blanc, str_replace (',', '', $ num); et faites de votre base de données une colonne décimale avec 2 décimales. DECIMAL (10,2) pendant la migration.


3 Réponses :


0
votes

vous pouvez utiliser str_replace de php pour obtenir le résultat:

<?php
     $num = '3,500.20';
     $formattedNum = str_replace(',', '', $num);
     echo $formattedNum;
?>

str_replace funcation remplacez votre ',' par '' a valeur vide, Pour en savoir plus sur str_replace , vous pouvez lire ici a>


0 commentaires

0
votes

Vous pouvez simplement supprimer la virgule avec str_replace (',', '', $ num) par exemple.

Le format d'entrée ne devrait pas affecter la valeur d'entrée réelle qui est 3500,20, cela ne semble pas être une bonne pratique.

De plus, number_format n'est pas pour convertir une chaîne en nombres, au contraire, il crée une jolie chaîne à partir de nombre (entier / flottant).


0 commentaires

0
votes

Vous pouvez essayer str_replace pour le résultat souhaité: -

$number = '3,500.20';
$number = str_replace(',', '', $number);
echo $number;

Sortie 3500.20


0 commentaires