Php 方法以字符串而不是浮点形式给出价格

Php 方法以字符串而不是浮点形式给出价格,php,Php,我从这个数组返回JSON,但是total的值是字符串格式的,而不是浮点数。我不知道我做错了什么 这是一个数组,它最终有一个字符串: return [ 'cart' => [ 'total' => amount($cart->total) ] ] 这是amount helper方法,问题来自: function amount($money) { return number_format(floatval($money), 2); }

我从这个数组返回JSON,但是total的值是字符串格式的,而不是浮点数。我不知道我做错了什么

这是一个数组,它最终有一个字符串:

return [ 
    'cart' => [
        'total'  => amount($cart->total)
    ]
]
这是amount helper方法,问题来自:

function amount($money)
{
    return number_format(floatval($money), 2);
}
我希望从总计返回一个浮点值,而不是字符串。

返回一个字符串

在您的例子中,您可能正在传递一个值,如3.15,在这种情况下,字符串似乎是奇数输出。但是,如果您传递了一个类似311583249的值,您就会明白为什么会这样:number_format311583249返回311583249

它每次返回一个字符串以保持连续性。如果当整数小于1000时它返回一个整数,或者当部分数小于1000时它返回一个浮点数,那么这将更难解释整体,并且不能达到数字\格式的确切目的-因此字符串总是以数字\格式返回

你可能想要的是;这将返回精度为2的浮点。或者您正在寻找-这也会返回一个字符串,但其格式就像是钱一样。

返回一个字符串

在您的例子中,您可能正在传递一个值,如3.15,在这种情况下,字符串似乎是奇数输出。但是,如果您传递了一个类似311583249的值,您就会明白为什么会这样:number_format311583249返回311583249

它每次返回一个字符串以保持连续性。如果当整数小于1000时它返回一个整数,或者当部分数小于1000时它返回一个浮点数,那么这将更难解释整体,并且不能达到数字\格式的确切目的-因此字符串总是以数字\格式返回


你可能想要的是;这将返回精度为2的浮点。或者您正在寻找-这也会返回一个字符串,但其格式就像是钱一样。

这很正常。在本例中,如果您将正在执行的所有内容的类型分解如下:

var_dump(1000000.12);
var_dump(floatval(1000000.12));
var_dump(number_format(floatval(1000000.12), 2));
然后,您会注意到,给定逗号分隔,number_格式是它成为字符串的点:

float(1000000.12)
float(1000000.12)
string(12) "1,000,000.12"

作为替代方法,也可能对您有用。

这很正常。在本例中,如果您将正在执行的所有内容的类型分解如下:

var_dump(1000000.12);
var_dump(floatval(1000000.12));
var_dump(number_format(floatval(1000000.12), 2));
然后,您会注意到,给定逗号分隔,number_格式是它成为字符串的点:

float(1000000.12)
float(1000000.12)
string(12) "1,000,000.12"

作为替代方法,也可能对您有用。

谢谢你们!但是,对于小于999的数字,这种情况仍然会发生,没有逗号。它将作为999@burtonLowel这是正确的,它只返回字符串。除了1000以下整数的连续性之外,这没有什么意义,但这就是为什么。谢谢你们!但是,对于小于999的数字,这种情况仍然会发生,没有逗号。它将作为999@burtonLowel这是正确的,它只返回字符串。除了1000以下整数的连续性之外,这没有多大意义,但这就是为什么。如果你的问题已经得到回答,接受带有复选标记的答案可以帮助其他人在将来找到答案,并帮助社区其他人集中精力。如果你的问题已经得到回答,接受带有复选标记的答案可以帮助其他人在将来找到答案,并帮助社区其他人集中精力。