利用thinkphp string()类生成随机字符串不重复

 Thinkphp   高蒙   阅读(3625)   评论(1)   2016-11-11 13:47:15    thinkphp 字符串 


在thinkphp中有个string类系统需要优惠券的生成程序,保证每次生成的优惠券都是唯一的,一次生成的数量不是固定的。

分享我的做法:

  • 1、查出表里已有的优惠码。

  • 2、在外部定义一个值,记录内部实际有效运行的次数。

  • 3、当内部循环的数量等于实际需求生成的数量时,跳出循环。

  • 4、避免循环的插入数据,手动的拼接SQL语句,然后执行。

代码:

$coupon      = M('coupon')->getCouponList('codes');
$coupon_list = array_column($coupon, 'codes');  // 此函数php版本 (PHP 5 >= 5.5.0)
$string      = new \Org\Util\String();
$i   = 1;
$num = 100;
$str = '';
$list = array();
while ($i <= $num) {
    $str = $string->randString(12);
    if (in_array($str, $coupon_list) === false) {
$list[] = $str;
$coupon_list[] = $str;
$i++;
    }
};
$sql = '';
foreach ($list as $k => $v) {
    $sql .= "INSERT INTO coupon (codes,addtime) VALUES('" . $v . "'," . time() . ");";
}
$info = M()->execute($sql);

在这里需要注意的是,不要使用query(),去执行原生的SQL语句,不然会报错的。





相关文章



我要评论


站长昵称:(*)

输入内容:


评论列表


高蒙

男,程序猿一枚

 

人生要是没有理想, 那跟一条咸鱼有什么分别。


关于我

  http://www.shuchengxian.com

高蒙个人博客是以PHP技术为主的程序员个人博客。博客主要发布php开发中遇到的问题以及解决办法,同时个人博客也分享网站模板素材,jquery插件等方面素材。


站点声明:相关侵权、举报、投诉及建议等,请发E-mail:936594075#qq.com(#替换成@)。

Copyright © 2018, www.shuchengxian.com, All rights reserved. 个人博客皖公网安备 34152302000022号 皖ICP备15015490号

关键词:个人博客,PHP博客,PHP博客程序,高蒙博客,高蒙个人博客,php程序员博客,程序员个人博客