我想计算一下运费.
我的守则:
$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)所以我的项目计数方法似乎是错的。
public static function getItemCount()
{
self::$items = session::getArray('cart');
$amount = 0;
foreach (self::$items as $i) {
$amount += $i;
}
return ($amount > 0) ? '(' . $amount . ')' : '';
}发布于 2016-01-26 07:56:16
我看到太多的括号了:
string(3) "(1)"如果将其转换为int,它将变成0 (是字符串(1),而不是1 !),这会影响后续的所有计算。
您只需要返回"1",要么是字符串,要么是int (php是松散类型的,请记住),如果您想要更确切地将其强制转换为int()。
去掉$item_count中的括号,即使self::getItemCount()只返回数字。如果你不能因为任何原因,只需删除它之后,类似$item_count = str_replace(['(',')'], '', self::getItemCount()),但最好的做法是只返回一个数字
https://stackoverflow.com/questions/35008953
复制相似问题