首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Floatvalue总是浮动的(0)

Floatvalue总是浮动的(0)
EN

Stack Overflow用户
提问于 2016-01-26 07:43:53
回答 1查看 45关注 0票数 0

我想计算一下运费.

  • 1项费用2.50欧元
  • 2-10项4,5欧元
  • 10+项目为(项目数/10)*4.5欧元

我的守则:

代码语言:javascript
复制
    $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);

下面是一些例子:

代码语言:javascript
复制
string(3) "(1)" float(0)
string(3) "(4)" float(0)

你看到我的错误了吗?

编辑:

arkascha注意到getItemCOunt返回一个字符串。我的密码是:

代码语言:javascript
复制
$item_count = intval(self::getItemCount());

现在我收到:

代码语言:javascript
复制
int(0) float(0)

所以我的项目计数方法似乎是错的。

代码语言:javascript
复制
public static function getItemCount()
{
    self::$items = session::getArray('cart');
    $amount = 0;
    foreach (self::$items as $i) {
        $amount += $i;
    }
    return ($amount > 0) ? '(' . $amount . ')' : '';
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-26 07:56:16

我看到太多的括号了:

代码语言:javascript
复制
string(3) "(1)"

如果将其转换为int,它将变成0 (是字符串(1),而不是1 !),这会影响后续的所有计算。

您只需要返回"1",要么是字符串,要么是int (php是松散类型的,请记住),如果您想要更确切地将其强制转换为int()。

去掉$item_count中的括号,即使self::getItemCount()只返回数字。如果你不能因为任何原因,只需删除它之后,类似$item_count = str_replace(['(',')'], '', self::getItemCount()),但最好的做法是只返回一个数字

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35008953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档