Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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 显示大于1000的货币值_Php_Shopping Cart - Fatal编程技术网

Php 显示大于1000的货币值

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

我试图修改一个伪购物车(它是基于数组的,在用户元而不是数据库中存储值)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['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);现在,货币显示正确。非常感谢你!