PHP: Si le nombre (virgule), de le convertir à droite format de nombre (à point)
J'ai un tableau mixte de valeurs:
$row = array('Unspecified risk','Yes','8','3','2','13','none','-1,49','-2,51','-1,46','-1,54'); -1,94 -1,55
Comme vous pouvez le voir il contient des textes et à la fois positifs et négatifs par des virgules numéros.
J'ai besoin de convertir les valeurs numériques pour le droit de format de nombre et de quitter les valeurs de texte.
Maintenant, je suis en boucle sur les valeurs:
foreach ($row as $value) {
//If $value is numeric, convert it to the
//right number format for use with MySQL (decimal(10,2))
//If not, leave it be.
}
Deux questions que j'ai étudié, mais ne peut pas trouver une solution adaptée.
- La conversion d'un nombre avec une virgule point décimal à flotteur
- J'ai besoin de php expression régulière pour valeur numérique, y compris "-" et ","
Quelqu'un pourrait-il donner un exemple concret?
OriginalL'auteur chocolata | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'utiliser des expressions régulières.
utilisation
str_replace()
que vous en avez besoin pour remplacer la','
pour un'.'
, et ensuite utiliserintval()
oufloatval()
fonctions pour obtenir la valeur numérique. Vous pouvez également utiliserstrstr()
de chercher la'.'
et de décider si l'utilisation deintval()
oufloatval()
Exemple:
Nous utiliser str_replace() pour remplacer le point par la virgule, de cette façon, c'est un international notation flotter, même si c'est sur la chaîne, de cette façon, plus tard, nous pouvons vérifier si c'est numérique avec
is_numeric()
<-- cette fonction est génial qu'il détecte à partir d'une chaîne si c'est un nombre ou non, peu importe integer ou float etc.Nous utilisons le is_numeric pour vérifier si la valeur est integer float ou texte, et de retourner la valeur correspondante à l'aide de
intval()
oufloatval()
(la valeur sans le remplacer appliquée ne sera pas de retour comme un numérique valide, seulement après le passage de l' , et . il sera de retour vrai que numérique).Nous utilisons
$row = array_map('toNumber', $row);
pour appliquer les modifications de la matrice.Profit xD
avec is_numeric(), vérifier mon montage 😀
Très élégante solution! Je vous remercie pour vos efforts: il fonctionne comme un charme.
Vous êtes les bienvenus 🙂
OriginalL'auteur aleation
REMARQUE: Cela fonctionne pour php 5.3 ou php 5.3+
Merci pour votre réponse!
OriginalL'auteur Girish
Utilisation
is_numeric
pour tester etnumber_format
de formatOriginalL'auteur Yukulélé