【问题标题】:PHP 7.4 number_format still renders as stringPHP 7.4 number_format 仍然呈现为字符串
【发布时间】:2021-09-25 14:12:46
【问题描述】:

这是我的数组 $grand_total_payouts,

 array(5) { 
            [0]=> string(6) "120.00" 
            [1]=> string(8) "1,200.00" 
            [2]=> string(8) "1,347.50" 
            [3]=> string(5) "40.00" 
            [4]=> string(6) "200.00" 
           }

当我这样做时

   $value = '';
    foreach ($grand_total_provider_payouts as $payout) {
        $value = number_format($payout, 2, '.', ',' );
        var_dump($value);
    }

我明白了。

 string(6) "120.00" 
 string(4) "1.00" 
 string(4) "1.00" 
 string(5) "40.00" 
 string(6) "200.00"

为什么 [1] 和 [2] 呈现为 1.0?为什么数字呈现为字符串而不是int?

根据https://www.php.net/manual/en/function.number-format 它应该呈现为一个数字。

我的最终目标是将这些数字相加。 将字符串转换为int的正确方法是什么?

【问题讨论】:

    标签: arrays php-7.4


    【解决方案1】:

    当您调用 number_format 时,它会返回一个字符串,因为这是预期的行为,货币格式的当前数字是一种常见情况。

    1.0 到“1.00 美元”

    如果您需要执行数学运算,请不要使用 number_format 之前。履行 所有操作,因此如果您希望呈现格式以查看,请使用 number_format

    【讨论】:

    • 关键是不要让数组中的数字变成字符串,首先。在生成数字的地方,我更改了代码以创建数字而不是字符串。
    • 一个简单的演员阵容是你在找什么?例如:$value = "1.01"; $numberValue = (float) $value; var_dump($numberValue); // 打印:float(1.01)
    • 问题出在数组上。从数组中,我无法更改字符串值。像这个字符串 [0] => "1,307.50" 不能设置为 int
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多