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 相关文章推荐
用php获取远程图片并把它保存到本地的代码
Apr 07 PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
php使用正则表达式获取字符串中的URL
Dec 29 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
php strftime函数获取日期时间(switch用法)
May 16 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 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
ThinkPHP缓存方法S()概述
2014/06/13 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
Python中functools模块的常用函数解析
2016/06/30 Python
python的文件操作方法汇总
2017/11/10 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
体育老师的教学自我评价分享
2013/11/19 职场文书
店长助理岗位职责
2013/12/13 职场文书
北京大学自荐信范文
2014/01/28 职场文书
学生手册家长评语
2014/02/10 职场文书
公司总经理任命书
2014/06/05 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书
聘任书格式及范文
2015/09/21 职场文书
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js