本文实例讲述了PHP实现的比较完善的购物车类。分享给大家供大家参考。具体实现方法如下:
前不久做到一个项目需要用到购物车,考虑到可能经常用到,所以把它封装成一个类,以便以后调用,感兴趣的读者可以简单的把这个类稍微修改一下就可以用在自己的程序里了.
复制代码 代码如下:<"_CART_INC_" , "exists") ;
/*购物车类*/
class TCart
{
var $SortCount; //商品种类数
var $TotalCost; //商品总价值
var $Id; //每类商品的ID(数组)
var $Name; //每类商品的名称(数组)
var $Price; //每类商品的价格(数组)
var $Discount; //商品的折扣(数组)
var $GoodPrice ; //商品的优惠价格(数组)
var $Count; //每类商品的件数(数组)
var $MaxCount ; //商品限量(数组)
//******构造函数
function TCart()
{
$this->SortCount=0;
session_start(); //初始化一个session
session_register('sId');
session_register('sName');
session_register('sPrice');
session_register('sDiscount');
session_register('sGoodPrice') ;
session_register('sCount') ;
session_register('sMaxCount') ;
$this->Update();
$this->Calculate();
}
//********私有,根据session的值更新类中相应数据
function Update()
{
global $sId,$sName,$sPrice,$sCount,$sDiscount,$sMaxCount,$sGoodPrice;
if(!isset($sId) or !isset($sName) or !isset($sPrice)
or !isset($sDiscount) or !isset($sMaxCount)
or !isset($sGoodPrice) or !isset($sCount)) return;
$this->Id =$sId;
$this->Name =$sName;
$this->Price =$sPrice;
$this->Count =$sCount;
$this->Discount = $sDiscount ;
$this->GoodPrice = $sGoodPrice ;
$this->MaxCount = $sMaxCount ;
//计算商品总数
$this->SortCount=count($sId);
}
//********私有,根据新的数据计算每类商品的价值及全部商品的总价
function Calculate()
{
for($i=0;$i<$this->SortCount;$i++)
{
/*计算每件商品的价值,如果折扣是0 ,则为优惠价格*/
$GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice :
ceil($this->Price[$i] * $this->Discount[$i])/100 );
$this->TotalCost += $GiftPrice * $this->Count[$i] ;
}
}
//**************以下为接口函数
//*** 加一件商品
// 判断是否蓝中已有,如有,加count,否则加一个新商品
//首先都是改session的值,然后再调用update() and calculate()来更新成员变量
function Add($a_ID , $a_Name , $a_Price , $a_Discount ,
$a_GoodPrice , $a_MaxCount , $a_Count)
{
global $sId , $sName , $sCount , $sPrice , $sDiscount ,
$sGoodPrice , $sMaxCount ;
$k=count($sId);
for ($i=0; $i<$k; $i++)
{ //先找一下是否已经加入了这种商品
if($sId[$i]==$a_ID)
{
$sCount[$i] += $a_Count ;
break;
}
}
if($i >= $k)
{ //没有则加一个新商品种类
$sId[] = $a_ID;
$sName[] = $a_Name;
$sPrice[] = $a_Price;
$sCount[] = $a_Count;
$sGoodPrice[] = $a_GoodPrice ;
$sDiscount[] = $a_Discount ;
$sMaxCount[] = $a_MaxCount ;
}
$this->Update(); //更新一下类的成员数据
$this->Calculate();
}
//移去一件商品
function Remove($a_ID)
{
global $sId , $sName , $sCount , $sPrice , $sDiscount ,
$sGoodPrice , $sMaxCount ;
$k = count($sId);
for($i=0; $i < $k; $i++)
{
if($sId[$i] == $a_ID)
{
$sCount[$i] = 0 ;
break;
}
}
$this->Update();
$this->Calculate();
}
//改变商品的个数
function ModifyCount($a_i,$a_Count)
{
global $sCount;
$sCount[$a_i] = $a_Count ;
$this->Update();
$this->Calculate();
}
/***************************
清空所有的商品
*****************************/
function RemoveAll()
{
session_unregister('sId');
session_unregister('sName');
session_unregister('sPrice');
session_unregister('sDiscount');
session_unregister('sGoodPrice') ;
session_unregister('sCount') ;
session_unregister('sMaxCount') ;
$this->SortCount = 0 ;
$this->TotalCost = 0 ;
}
//是否某件商品已在蓝内,参数为此商品的ID
function Exists($a_ID)
{
for($i=0; $i<$this->SortCount; $i++)
{
if($this->Id[$i]==$a_ID) return TRUE;
}
return FALSE;
}
//某件商品在蓝内的位置
function IndexOf($a_ID)
{
for($i=0; $i<$this->SortCount; $i++)
{
if($this->Id[$i]==$id) return $i;
}
return 0;
}
//取一件商品的信息,主要的工作函数
//返回一个关联数组,
function Item($i)
{
$Result[id] = $this->Id[$i];
$Result[name] = $this->Name[$i];
$Result[price] = $this->Price[$i];
$Result[count] = $this->Count[$i];
$Result[discount] = $this->Discount[$i] ;
$Result[goodprice] = $this->GoodPrice[$i] ;
$Result[maxcount] = $this->MaxCount[i] ;
return $Result;
}
//取总的商品种类数
function CartCount()
{
return $this->SortCount;
}
//取总的商品价值
function GetTotalCost()
{
return $this->TotalCost;
}
}
?>
希望本文所述对大家的PHP程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 大自然音乐系列《星光夜语》[WAV/CUE/分轨][453.3MB]
- 史依弘《史依弘交响乐京剧演唱专辑HQ》头版限量编号[WAV+CUE]
- 曼丽2020《女人三十风继续吹》HQCD[WAV+CUE]
- 曼丽2021《女人三十2雾之恋》HQCD[WAV+CUE]
- 隔壁老樊.2019-我曾【好听音乐】【FLAC分轨】
- 高林生.1993-牵挂你的人是我【白天鹅】【WAV+CUE】
- 洪卓立.2012-找个懂我的女孩(国专)【英皇娱乐】【WAV+CUE】
- 曼丽2022《女人三十3晚秋》HQCD[WAV+CUE]
- 曼丽2018《女人三十4冬天》HQCD[WAV+CUE]
- 柏菲-《好歌30年壹》限量开盘母带ORMCD[低速原抓WAV+CUE]
- 大自然音乐系列《水舞》[WAV/CUE/分轨][424.3MB]
- 大自然音乐系列《星光夜语》[WAV/CUE/分轨][453.3MB]
- 大自然音乐系列《鲸声奇遇》[WAV/CUE/分轨][566.8MB]
- 陆虎.2024-时间是个有趣的东西【天娱传媒】【FLAC分轨】
- 江淑娜.1988-琼瑶原著电视连续剧主题曲【风格】【WAV+CUE】