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 大数据量及海量数据处理算法总结
May 07 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
PHP中类的自动加载的方法
Mar 17 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
Jul 21 PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 PHP
在Laravel的Model层做数据缓存的实现
Sep 26 PHP
php操作redis命令及代码实例大全
Nov 19 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
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
基于jquery的模态div层弹出效果
2010/08/21 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
python缩进区别分析
2014/02/15 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
python中range()与xrange()用法分析
2016/09/21 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python之reload流程实例代码解析
2018/01/29 Python
python素数筛选法浅析
2018/03/19 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
利用python进行文件操作
2020/12/04 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
人力资源管理毕业生自荐信
2013/11/21 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
博士导师推荐信
2015/03/25 职场文书
五年级数学教学反思
2016/02/16 职场文书