Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要PHP数字格式的帮助吗_Php_Number Formatting - Fatal编程技术网

需要PHP数字格式的帮助吗

需要PHP数字格式的帮助吗,php,number-formatting,Php,Number Formatting,大家好,我正在尝试用php number\u格式格式化输入数字范围 输入概率 1234 12345 123456789 123456789,50 123.45,00 123.456.78,50 输出应该是 点应该是3位的乘法器,最后两位(如果在输入范围内可用)应该带有逗号分隔符 1.234,00 12.345,00 123.456.789,00 123.456.789,50 12.345,00 12.345.678,50 输出应符合荷兰格式,点应为3位数的乘法器,最后两位数应带有逗号分隔符 这是

大家好,我正在尝试用php number\u格式格式化输入数字范围

输入概率
  • 1234
  • 12345
  • 123456789
  • 123456789,50
  • 123.45,00
  • 123.456.78,50
  • 输出应该是 点应该是3位的乘法器,最后两位(如果在输入范围内可用)应该带有逗号分隔符

  • 1.234,00
  • 12.345,00
  • 123.456.789,00
  • 123.456.789,50
  • 12.345,00
  • 12.345.678,50
  • 输出应符合荷兰格式,点应为3位数的乘法器,最后两位数应带有逗号分隔符

    这是一个链接,你们可以得到如下所示的输出

    我正在使用的代码

    echo numberFormat('12345');
    
    function numberFormat($num)
    {
         return preg_replace("/(?<=\d)(?=(\d{3})+(?!\d))/",".",$num);
    }
    
    echo numberFormat('12345');
    函数numberFormat($num)
    {
    返回预更换(“/(?)?
    
    应该可以了。

    我想是这样的:

    $number = 1234.56
    echo number_format($number, 2, ',', '.');
    
    关于输入你可以检查和所有的“,”删除它和“,”替换为“

    我希望有帮助

    $temp=number_format((float)$number, 2, '.', '');
    
    $inter =number_format($temp,2);
    
    $temp1=str_replace(',','.',$inter);
    $final=substr_replace($temp1,',',-3,1);
    
    echo"$final";
    

    希望它能有所帮助

    这与@Emesto解决方案非常相似,但必须包含一个数字:

    $temp=number_format((float)$number, 2, '.', '');
    
    $inter =number_format($temp,2);
    
    $temp1=str_replace(',','.',$inter);
    $final=substr_replace($temp1,',',-3,1);
    
    echo"$final";
    
    $num = '123.456.789,50';
    $n = str_replace('.', '', $num);
    $n = str_replace(',', '.', $n);
    
    # $n is no longer a string
    $n = $n + 0;
    
    # so it should work fine in number_format
    echo number_format($n,2,',','.');
    

    PS:我刚刚测试了这段代码,以确保它能正常工作。

    我试过了,但是如果我的输入与输入概率的(4)和(5)类似,那么?首先
    上分解
    -如果结果有一个元素,继续执行
    数字格式
    它。如果它有两个元素,最后一个元素有两个数字,则执行
    $e[0]+$e[1]/100
    $e
    是分解的元素)和
    number\u格式。在所有其他情况下,输入无效。嗨,Ernesto,谢谢你的回答,但我尝试了使用函数numberformat($number){$temp=str\u replace(“.”,“,$number);$temp2=str\u replace(“,”,“,”,$temp);返回number\u格式($temp2,2,“,”,“,”);”)}其中$number=1.234,00我遇到了这个错误“遇到了一个格式不正确的数值”,请您提供帮助,Oks然后在“echo number_format($temp2,2',,',',');”之前添加。添加$temp2=$temp2*1;因此您可以将其更改为数字类型
    
    $num = '123.456.789,50';
    $n = str_replace('.', '', $num);
    $n = str_replace(',', '.', $n);
    
    # $n is no longer a string
    $n = $n + 0;
    
    # so it should work fine in number_format
    echo number_format($n,2,',','.');