php实现保存周期为1天的购物车类


Posted in PHP onJuly 07, 2017

本文实例为大家分享了php购物车类的具体代码,供大家参考,具体内容如下

购物车类 Cookies 保存,保存周期为1天 注意:浏览器必须支持Cookie才能够使用

示例代码:

<?php
/**
 * 购物车类 Cookies 保存,保存周期为1天 注意:浏览器必须支持Cookie才能够使用
 */
class CartAPI {
  private $CartArray = array(); // 存放购物车的二维数组
  private $CartCount; // 统计购物车数量
  public $Expires = 86400; // Cookies过期时间,如果为0则不保存到本地 单位为秒
  /**
   * 构造函数 初始化操作 如果$Id不为空,则直接添加到购物车
   *
   */
  public function __construct($Id = "",$Name = "",$Price1 = "",$Price2 = "",$Price3 = "",$Count = "",$Image = "",$Expires = 86400) {
    if ($Id != "" && is_numeric($Id)) {
      $this->Expires = $Expires;
      $this->addCart($Id,$Name,$Price1,$Price2,$Price3,$Count,$Image);
    }
  }
  /**
   * 添加商品到购物车
   *
   * @param int $Id 商品的编号
   * @param string $Name 商品名称
   * @param decimal $Price1 商品价格
   * @param decimal $Price2 商品价格
   * @param decimal $Price3 商品价格
   * @param int $Count 商品数量
   * @param string $Image 商品图片
   * @return 如果商品存在,则在原来的数量上加1,并返回false
   */
  public function addCart($Id,$Name,$Price1,$Price2,$Price3,$Count,$Image) {
    $this->CartArray = $this->CartView(); // 把数据读取并写入数组
    if ($this->checkItem($Id)) { // 检测商品是否存在
      $this->ModifyCart($Id,$Count,0); // 商品数量加$Count
      return false;
    }
    $this->CartArray[0][$Id] = $Id;
    $this->CartArray[1][$Id] = $Name;
    $this->CartArray[2][$Id] = $Price1;
    $this->CartArray[3][$Id] = $Price2;
    $this->CartArray[4][$Id] = $Price3;
    $this->CartArray[5][$Id] = $Count;
    $this->CartArray[6][$Id] = $Image;
    $this->save();
  }
  /**
   * 修改购物车里的商品
   *
   * @param int $Id 商品编号
   * @param int $Count 商品数量
   * @param int $Flag 修改类型 0:加 1:减 2:修改 3:清空
   * @return 如果修改失败,则返回false
   */
  public function ModifyCart($Id, $Count, $Flag = "") {
    $tmpId = $Id;
    $this->CartArray = $this->CartView(); // 把数据读取并写入数组
    $tmpArray = &$this->CartArray; // 引用
    if (!is_array($tmpArray[0])) return false;
    if ($Id < 1) {
      return false;
    }
    foreach ($tmpArray[0] as $item) {
      if ($item === $tmpId) {
        switch ($Flag) {
          case 0: // 添加数量 一般$Count为1
            $tmpArray[5][$Id] += $Count;
            break;
          case 1: // 减少数量
            $tmpArray[5][$Id] -= $Count;
            break;
          case 2: // 修改数量
            if ($Count == 0) {
              unset($tmpArray[0][$Id]);
              unset($tmpArray[1][$Id]);
              unset($tmpArray[2][$Id]);
              unset($tmpArray[3][$Id]);
              unset($tmpArray[4][$Id]);
              unset($tmpArray[5][$Id]);
              unset($tmpArray[6][$Id]);
              break;
            } else {
              $tmpArray[5][$Id] = $Count;
              break;
            }
          case 3: // 清空商品
            unset($tmpArray[0][$Id]);
            unset($tmpArray[1][$Id]);
            unset($tmpArray[2][$Id]);
            unset($tmpArray[3][$Id]);
            unset($tmpArray[4][$Id]);
            unset($tmpArray[5][$Id]);
            unset($tmpArray[6][$Id]);
            break;
          default:
            break;
        }
      }
    }
    $this->save();
  }
  /**
   * 清空购物车
   *
   */
  public function RemoveAll() {
    $this->CartArray = array();
    $this->save();
  }
  /**
   * 查看购物车信息
   *
   * @return array 返回一个二维数组
   */
  public function CartView() {
    $cookie = stripslashes($_COOKIE['CartAPI']);
    if (!$cookie) return false;
    $tmpUnSerialize = unserialize($cookie);
    return $tmpUnSerialize;
  }
  /**
   * 检查购物车是否有商品
   *
   * @return bool 如果有商品,返回true,否则false
   */
  public function checkCart() {
    $tmpArray = $this->CartView();
    if (count($tmpArray[0]) < 1) {      
      return false;
    }
    return true;
  }
  /**
   * 商品统计
   *
   * @return array 返回一个一维数组 $arr[0]:产品1的总价格 $arr[1:产品2得总价格 $arr[2]:产品3的总价格 $arr[3]:产品的总数量
   */
  public function CountPrice() {
    $tmpArray = $this->CartArray = $this->CartView();
    $outArray = array(); //一维数组
    // 0 是产品1的总价格
    // 1 是产品2的总价格
    // 2 是产品3的总价格
    // 3 是产品的总数量
    $i = 0;
    if (is_array($tmpArray[0])) {
      foreach ($tmpArray[0] as $key=>$val) {
        $outArray[0] += $tmpArray[2][$key] * $tmpArray[5][$key];
        $outArray[1] += $tmpArray[3][$key] * $tmpArray[5][$key];
        $outArray[2] += $tmpArray[4][$key] * $tmpArray[5][$key];
        $outArray[3] += $tmpArray[5][$key];
        $i++;
      }
    }
    return $outArray;
  }
  /**
   * 统计商品数量
   *
   * @return int
   */
  public function CartCount() {
    $tmpArray = $this->CartView();
    $tmpCount = count($tmpArray[0]);
    $this->CartCount = $tmpCount;
    return $tmpCount;
  }
  /**
   * 保存商品 如果不使用构造方法,此方法必须使用
   *
   */
  public function save() {
    $tmpArray = $this->CartArray;
    $tmpSerialize = serialize($tmpArray);
    setcookie("CartAPI",$tmpSerialize,time()+$this->Expires);
  }
  /**
   * 检查购物车商品是否存在
   *
   * @param int $Id
   * @return bool 如果存在 true 否则false
   */
  private function checkItem($Id) {
    $tmpArray = $this->CartArray;
    if (!is_array($tmpArray[0])) return;
    foreach ($tmpArray[0] as $item) {
      if ($item === $Id) return true;
    }
    return false;
  }
}
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
PHP $_SERVER详解
Jan 16 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
PHP输出时间差函数代码
Jan 28 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
php中10个不同等级压缩优化图片操作示例
Nov 14 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 #PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 #PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 #PHP
微信开发之获取JSAPI TICKET
Jul 07 #PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 #PHP
一个实用的php验证码类
Jul 06 #PHP
万能的php分页类
Jul 06 #PHP
You might like
PHP入门速成教程
2007/03/19 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php数组转成json格式的方法
2015/03/09 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
python matplotlib画图实例代码分享
2017/12/27 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
OpenCV 边缘检测
2019/07/10 Python
关于Python错误重试方法总结
2021/01/03 Python
Python用SSH连接到网络设备
2021/02/18 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
StubHub德国:购买和出售门票
2017/09/06 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
数据库面试要点基本概念
2013/10/31 面试题
网上商城创业计划书范文
2014/01/31 职场文书
会计专业自荐信
2014/06/03 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
小学音乐课教学反思
2016/02/18 职场文书
高二化学教学反思
2016/02/22 职场文书