答: 如果在类中session_start();那么当程序中再次出现session_start()时会出错
2、不要再每次增加商品和修改数量的时候计算金额,只存数量和单价就可以了,需要金额的时候再计算比较好点
答:好在这只是数组操作,应该对效率影响不大,所以我还是参照现在网上商店的作法,给出计算结果
3、为什么把价格取整?
答:这的确是一个重大失误,价格不能intval而应floatval.
以下把修改后的文件再发一次.
cart.class.php
已经修改后的PHP代码:------------------------------------------------------------------
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/php/)<?php
/**
* 类名: cart
* 描述: 尝试以最简单的方式实现购物车
* 其他: 2004-8-19
*/
class cart
{
/**
* 函数名称: addItem
* 函数功能: 添加商品
* 输入参数: $data ------------- 商品数组
* 函数返回值: none
* 其它说明: 因为数据是记录在session中,所以不用返回
*/
function addItem($data)
{
if(is_array($data)&&!empty($data))
{
foreach($data as $key=$val)
{
// 如果商品存在就加数量和价格
if($this-_isExists($key))
{
$_SESSION['cart'][$key]["count"] += floatval($val['price'])*intval($val['num']);
$_SESSION['cart'][$key]["num"] += intval($val['num']);
}
// 否则直接加入
else
{
$_SESSION['cart'][$key] = $data[$key];
$_SESSION['cart'][$key]["name"] = $val['name'];
$_SESSION['cart'][$key]["price"] = $val['price'];
$_SESSION['cart'][$key]["count"] = floatval($val['price'])*intval($val['num']);
$_SESSION['cart'][$key]["num"] = intval($val['num']);
}
}
}
}
/**
* 函数名称: _isExists
* 函数功 猜你喜欢