我想计算运费。
我的代码:
$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 . ')' : '';
}
答案 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())
,最好的做法是返回一个数字