下面是全部代码,细节你根据你的需要自己修改
<?php /************************ 将session封装入一个简单的购物车类之中, 
请参考PHP学习记录的相应文章。 每件商品要求具备id,name,price,count四个属性, 
如果你要加新的属性,请修改相应部分。 *************************/ class TCart { var $SortCount; //商品种类数 
var $TotalCost; //商品总价值 var $Id; //每类商品的ID(数组) 
var $Name; //每类商品的名称(数组) 
var $Price; //每类商品的价格(数组) 
var $Count; //每类商品的件数(数组) 
var $Cost; //每类商品的价值(数组) 
//******构造函数 
function TCart(){ 
$this->SortCount=0;  
      
    session_start();    //初始化一个session  
    session_register('sId');  
    session_register('sName');  
    session_register('sPrice');  
    session_register('sCount');  
      
    $this->Update();  
    $this->Calculate();  
      
  }  
    
  //********私有,根据session的值更新类中相应数据  
  function Update(){  
    global $sId,$sName,$sPrice,$sCount;  
      
    if(!isset($sId) or !isset($sName) or !isset($sPrice)) return;  
      
    $this->Id=$sId;  
    $this->Name=$sName;  
    $this->Price=$sPrice;  
    $this->Count=$sCount;  
      
    $this->SortCount=count($sId);  
      
  }  
    
  //********私有,根据新的数据计算每类商品的价值及全部商品的总价  
  function Calculate(){  
   for($i=0;$i<$this->SortCount;$i++){  
     $this->Cost[$i]=$this->Price[$i]*$this->Count[$i];  
     $this->TotalCost += $this->Cost[$i];  
   }  
  }  
    
   
 //**************以下为接口函数  
    
 //*** 加一件商品  
 // 判断是否蓝中已有,如有,加count,否则加一个新商品  
 //首先都是改session的值,然后再调用update() and calculate()来更新成员变量  
  function AddOne($id,$na,$pr){  
    global $sId,$sName,$sPrice,$sCount;  
      
    $k=count($sId);  
    for($i=0;$i<$k;$i++){ //先找一下是否已经加入了这种商品 
if($sId[$i]==$id){ 
$sCount[$i]++; 
break; 


if($i>=$k){   //没有则加一个新商品种类  
      $sId[]=$id;  
      $sName[]=$na;  
      $sPrice[]=$pr;  
      $sCount[]=1;  
    }  
      
    $this->Update();    //更新一下类的成员数据  
    $this->Calculate();  
  }  
   
 //移去一件商品  
  function RemoveOne($id){  
    global $sId,$sName,$sPrice,$sCount;  
      
    $k=count($sId);  
    for($i=0;$i<$k;$i++){ 
if($sId[$i]==$id){ 
$sCount[$i]--; 
break; 

} $this->Update();  
    $this->Calculate();  
  }  
    
  //改变商品的个数  
  function ModifyCount($i,$ncount){  
   global $sCount;  
        
   $sCount[$i]=$ncount;  
    
   $this->Update();  
   $this->Calculate();  
    
  }  
    
  //清空一种商品  
  function EmptyOne($i){  
   global $sCount;  
    
   $sCount[$i]=0;  
        
   $this->Update();  
   $this->Calculate();  
  }  
    
    
  /***************************  
  清空所有的商品  
    
  因为在win里PHP不支持session_destroy()函数,所以这个清空函数不完善,  
  只是把每种商品的个数置为0。  
  如果是在linux下,可以直接用session_destroy()来做。  
  *****************************/  
  function EmptyAll(){  
    global $sId,$sName,$sPrice,$sCount;  
      
    $k=count($sId);  
    for($i=0;$i<$k;$i++){ 
$sCount[$i]=0; 
} $this->Update();  
    $this->Calculate();  
      
    session_unregister('sId');  
    session_unregister('sName');  
    session_unregister('sPrice');  
    session_unregister('sCount');  
      
    $this->SortCount=0;  
      
  }  
    
  //是否某件商品已在蓝内,参数为此商品的ID  
  function InCart($id){  
    for($i=0;$i<$this->SortCount;$i++){  
      if($this->Id[$i]==$id) return TRUE;  
    }  
    return FALSE;  
  }  
    
  //某件商品在蓝内的位置  
  function IndexOf($id){  
    for($i=0;$i<$this->SortCount;$i++){  
      if($this->Id[$i]==$id) return $i;  
    }  
    return 0;  
  }  
    
  //取一件商品的信息,主要的工作函数  
  //返回一个关联数组,下标分别对应 id,name,price,count,cost  
  function GetOne($i){  
    $Result[id]=$this->Id[$i];  
    $Result[name]=$this->Name[$i];  
    $Result[price]=$this->Price[$i];  
    $Result[count]=$this->Count[$i];  
    $Result[cost]=$this->Cost[$i];  
      
    return $Result;  
  }  
    
  //取总的商品种类数  
  function GetSortCount(){  
    return $this->SortCount;  
  }  
    
  //取总的商品价值  
  function GetTotalCost(){  
    return $this->TotalCost;  
  }  
    
//end class   
}  ?>