如何将小数点分隔符从(。)更改为(,)

时间:2019-01-25 10:46:47

标签: php

我知道这个问题以前可能已经回答过。但我仍然无法解决。

我的数据来自CSV文件,该数据看起来像这样1,32但我在变量$getdata中也有一些文本,其中一半是VARCHAR,另一半是DECIMAL。

但是当我查看自己的网站时,数据就像这样1.00

所以我的问题是如何更改小数点分隔符。

数据位于代码段底部的$getdata变量中

if (isset($_POST['btn-upload'])){

copy("$sourcepath/$latest_filename","$copy/$latest_filename");
// Here i split the csv file, from second line. and using the first and fourth lines as the headers.
if (($openfile = fopen("$copy/$latest_filename", "r")) !== false) {

    $header1 = fgetcsv($openfile, 1000, ";"); // consume, but don't use

    $csv->createPalleTable($latest_filename);
    $csv->insertPalleTable($latest_filename, array_map("utf8_encode", fgetcsv($openfile, 1000, ";")));

    $delimiting_row = fgetcsv($openfile, 1000, ";"); // consume, but don't use 

    $header2 = fgetcsv($openfile, 1000, ";"); // consume, but don't use

    $csv->createCsvTable($latest_filename);
    while ($getdata = fgetcsv($openfile, 1000, ";")) {
        $csv->insertCsvTable($latest_filename, array_map("utf8_encode", $getdata));
    }
}

}

我还没有上传完整的代码,因为那将是很多代码的方式。我很确定问题出在代码片段的底部。如果您需要有关代码的任何信息,我将很乐意回答。

1 个答案:

答案 0 :(得分:1)

尝试使用number format和简单的str_replace来替换逗号,以便可以解析浮点数。

number_format(floatval(str_replace(',', '.', str_replace('.', '', $your_number_here))), '.', '', 2)

如果要使用单独的可读功能而不是单行代码:

function convert_decimal($your_number_here, $decimal_places = 2) 
{
    $without_thousands_dots = str_replace('.', '', $your_number_here);
    $replace_comma_for_dot = str_replace(',', '.', $without_thousands_dots);
    $float_number = floatval($replace_comma_for_dot);
    return number_format($float_number, '.', '', $decimal_places)
}

如果不想使用舍入或将数字用作实际数字,则可以跳过floatval部分,而只需保留它以返回$ replace_comma_for_dot变量即可。

作为参考,如何将十进制数字解析为浮点数,以便可以使用数字格式:

Converting a number with comma as decimal point to float