Floatvalue总是浮动的(0)

时间:2016-01-26 07:43:53

标签: php floating-point

我想计算运费。

  • 1项费用2.50€
  • 2-10项4,5€
  • 10件以上(件数) 项目/ 10)* 4.5€

我的代码:

    $item_count = self::getItemCount();
    if($item_count == 1){
        $vsk = 2.5;
    }
    else if($item_count > 1 && $item_count <= 10){
        $vsk = 4.5;
    }
    else{
        $vsk = ceil($item_count/10) * 4.5;
    }
    var_dump($item_count);
    var_dump($vsk);

$item_count包含购物车中的商品数量,并为我提供正确的价值。但$vsk的vardump总是float(0);

一些例子:

string(3) "(1)" float(0)
string(3) "(4)" float(0)

你看到我的错误吗?

修改

arkascha注意到getItemCOunt返回一个字符串。 我将代码改为:

$item_count = intval(self::getItemCount());

现在我收到了:

int(0) float(0)

所以我的Item-Count-method似乎错了。

public static function getItemCount()
{
    self::$items = session::getArray('cart');
    $amount = 0;
    foreach (self::$items as $i) {
        $amount += $i;
    }
    return ($amount > 0) ? '(' . $amount . ')' : '';
}

1 个答案:

答案 0 :(得分:2)

我在那里看到太多括号:

string(3) "(1)"

如果你将其投放到int,它会变为0(它是字符串(1),而不是1!),这会让你所有随后的事情变得渺茫计算

你需要返回&#34; 1&#34;,字符串或int(php是松散类型,请记住),如果你想更确定地将它转换为int()。

消除$item_count中的这些括号,即make self::getItemCount()仅返回该号码。如果您因任何原因无法理解,请稍后将其删除,例如$item_count = str_replace(['(',')'], '', self::getItemCount()),最好的做法是返回一个数字