Php 显示大于1000的货币值
我试图修改一个伪购物车(它是基于数组的,在用户元而不是数据库中存储值)PHP文件,该文件错误地将currency>1000显示为0.01 以下是我要更改的块:Php 显示大于1000的货币值,php,shopping-cart,Php,Shopping Cart,我试图修改一个伪购物车(它是基于数组的,在用户元而不是数据库中存储值)PHP文件,该文件错误地将currency>1000显示为0.01 以下是我要更改的块: public function get_cart_value() { $cart = $this->cart; $prices = array(); $cart = apply_filters('ss_mod_cart_value', $cart); foreach ($cart['product
public function get_cart_value()
{
$cart = $this->cart;
$prices = array();
$cart = apply_filters('ss_mod_cart_value', $cart);
foreach ($cart['products'] as $product)
{
array_push( $prices, array('price'=>trim($product['price']), 'discount' => trim($product['discount'] )));
}
$total = 0;
foreach($prices as $price)
{
$price = $this->calc_discount($price['price'], $price['discount']);
$price = str_replace('.', '', $price['final_price']);
$total += $price;
}
$total = number_format($total/100, 2);
return $total;
}
其工作的购物车按钮将正确显示少于4位的项目总值,例如:
300 + 500 = 800
但是
300+500+1000=800.01
而不是1800
我一直在尝试更改number\u format()
以使其正常工作,但找不到解决方案。我认为是这样的
$price = str_replace('.', '', $price['final_price']);
300+500+“1000”
你的数字如1000被转换成一个字符串,然后总数变成801
您必须按照本文建议的正确方式转换为float
可能有点贫民区,但您是否尝试过类似
(10*100)
?您的整个foreach
循环看起来可疑。您正在覆盖$price
的值,然后将该结果用于下一次计算,但让我困惑的是替换小数点。这应该是基本的算术运算,但看起来您正在进行一些奇怪的字符串转换,这会破坏您的结果。尝试此解决方案我遵循该线程并找到了一个解决方法:将str_replace替换为floatval,如$price=floatval(preg_replace('/[^\d\.]/','$price['final_price']);并将total改为$total=number\u格式($total,2);现在,货币显示正确。非常感谢你!