PHP生成唯一的促销/优惠/折扣码(附源码)


Posted in PHP onDecember 28, 2012

每一个电子商务网站,现在有一种或多种类型的优惠/折扣/优惠券系统,给大家分享一下如何在PHP生成唯一的促销/折扣码。主要是实现一个优惠码系统,可用于跟踪用户来自某些特定的来源,例如有些主机促销的时候链接到别的页面会有优惠码生成,还有更多的促销代码等。因此,今天将讨论这样一个优惠码的实现过程

考虑的需求
代码应该很容易记住,因此保持短的长度是一个好主意,使用户可以很容易地记住它
没有特殊字符!它应该是字母数字组合,因为它会永远是为用户更容易记住
长度推广/折扣代码的正确。没有一个标准的长度,因为它取决于你想生成的长度,例如,如果你想生成1000代码的代码,那么你需要在至少4个字符代码。促销/优惠码长度通常为4到8个字符,但它取决于您的要求。
那好吧,让我们开始吧!让我们来看看代码,然后我会详细解释。它很容易

<?php 
/** 
* @param int $no_of_codes//定义一个int类型的参数 用来确定生成多少个优惠码 
* @param array $exclude_codes_array//定义一个exclude_codes_array类型的数组 
* @param int $code_length //定义一个code_length的参数来确定优惠码的长度 
* @return array//返回数组 
*/ 
function generate_promotion_code($no_of_codes,$exclude_codes_array='',$code_length = 4) 
{ 
$characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
$promotion_codes = array();//这个数组用来接收生成的优惠码 
for($j = 0 ; $j < $no_of_codes; $j++) 
{ 
$code = ""; 
for ($i = 0; $i < $code_length; $i++) 
{ 
$code .= $characters[mt_rand(0, strlen($characters)-1)]; 
} 
//如果生成的4位随机数不再我们定义的$promotion_codes函数里面 
if(!in_array($code,$promotion_codes)) 
{ 
if(is_array($exclude_codes_array))// 
{ 
if(!in_array($code,$exclude_codes_array))//排除已经使用的优惠码 
{ 
$promotion_codes[$j] = $code;将生成的新优惠码赋值给promotion_codes数组 
} 
else 
{ 
$j--; 
} 
} 
else 
{ 
$promotion_codes[$j] = $code;//将优惠码赋值给数组 
} 
} 
else 
{ 
$j--; 
} 
} 
return $promotion_codes; 
} 
echo '<h1>Promotion / Discount Codes</h1>'; 
echo '<pre>'; 
print_r(generate_promotion_code(50,'',4)); 
echo '</pre>'; 
?>

该代码由三个参数组成,
第一个参数是你要生成优惠码的个数(在这里是生成50个)。第二个参数exclude array,确保在当前列表中的生成唯一优惠码,所以如果你已经数据库中有一些未使用的代码,你可以把它传递给exclude。最后一个参数是优惠码的的长度。这个函数将返回规定长度的优惠码 这里是4位的优惠码。

这里我已经使用数字和大写字母组合,赋值给$characters的字符串,你可以使用小写字母或任何其他的字母组合试用。此功能的作用是生成唯一的优惠码。这个是PHP版本的,下一次给一个NET版本的,希望能帮助大家
下载地址

PHP 相关文章推荐
用文本文件制作留言板提示(上)
Oct 09 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
在PHP中使用curl_init函数的说明
Nov 02 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
php验证是否是md5编码的简单代码
Apr 01 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
PHP中feof()函数实例测试
Aug 23 PHP
浅谈php的优缺点
Jul 14 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 #PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 #PHP
php和javascript之间变量的传递实现代码
Dec 19 #PHP
ajax php传递和接收变量实现思路及代码
Dec 19 #PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 #PHP
PHP获取http请求的头信息实现步骤
Dec 16 #PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 #PHP
You might like
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
cookie的secure属性详解
2015/04/08 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
python中解析json格式文件的方法示例
2017/05/03 Python
django 多数据库配置教程
2018/05/30 Python
python实现双色球随机选号
2020/01/01 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
八年级音乐教学反思
2014/01/09 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
工作保证书范文
2014/04/29 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书