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 callback函数使用方法和注意事项
Jan 23 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 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
drupal 代码实现URL重写
2011/05/04 PHP
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
Python遍历numpy数组的实例
2018/04/04 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
什么是会话Bean
2015/05/14 面试题
鼓励运动员的广播稿
2014/02/08 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
幼儿园课题方案
2014/06/09 职场文书
教师工作能力自我评价
2015/03/04 职场文书
公司开业主持词
2015/07/02 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python