提供一个最简单的购物车,提供一个最简单的购物车
【 tulaoshi.com - PHP 】
1、session_start()为什么不写在类里面?
答: 如果在类中session_start();那么当程序中再次出现session_start()时会出错
2、不要再每次增加商品和修改数量的时候计算金额,只存数量和单价就可以了,需要金额的时候再计算比较好点
答:好在这只是数组操作,应该对效率影响不大,所以我还是参照现在网上商店的作法,给出计算结果
3、为什么把价格取整?
答:这的确是一个重大失误,价格不能intval而应floatval.
以下把修改后的文件再发一次.
cart.class.php
已经修改后的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 
    *   函数功
                        
来源:http://www.tulaoshi.com/n/20160129/1490969.html