微擎之一元夺宝之随机生成兑奖码并插入数据库

9 篇文章 0 订阅
3 篇文章 0 订阅

-微擎之一元夺宝之随机生成兑奖码并插入数据库
(1)取四个不同的数
(2)从小到大排列
(3)去重 如果重复重新生成兑奖码
(4)1,2,3,4 和 4,3,2,1是一个兑奖码,需去重
-取四个不同的数

while (count($arr)<4) {
      $arr[]=rand(1,33); 
}

-去重复

/*去重*/
      $arr=array_unique($arr);

-重小到大排列

/*从小到大排列*/
 for($i=0;$i<count($arr);$i++){
      for($j=$i+1;$j<count($arr);$j++){
          $c=$arr[$i];
          $d=$arr[$j];
          if($c>$d){   
            $arr[$i]=$d;
            $arr[$j]=$c;
          }

      }
 }

-比较两个兑奖码是否重复

for($j=1;$j<count($code);$j++){
        /*判断数组转换成字符串*/
        $a=implode($code[$i]);
        /*逆序*/
        $b=implode(array_reverse($code[$j]));
        /*判断字符串是否完全相同*/
        $res=strcasecmp($a,$b);
         if(empty($res)){
        $code[$i]=getgoods_code();
         }
    }

-判断数据库中是否有,无插入


/*判断数据库中是否有,无插入*/
  $result=pdo_fetch("SELECT * FROM ".tablename('domall_zc_goods_code')." WHERE goods_id=:goods_id", array(':goods_id' =>$goods_id));
  if($result){
     message('该商品兑奖码已生成', $this->createWebUrl('goods'));

  }else{
    /*插入数据表*/
   for($i=0;$i<count($code);$i++){
         $data['goods_prizecode']=implode(',',$code[$i]);
         $data['goods_id']=$goods_id;
         $ret = pdo_insert('domall_zc_goods_code', $data);
}

  }

全部代码如下:

if($op=='bld'){
  /*生成兑奖码*/
$goods_id = intval($_GPC['id']);
/*查出兑奖码个数 限制购买人数+500*/
$totalsum=pdo_get('domall_zc_goods', array('id' => $goods_id), array('need_person'));
$totalsum=$totalsum['need_person']+500;
$code=array();
for($i=0;$i<$totalsum;$i++){   
    $code[$i]=getgoods_code();
    for($j=1;$j<count($code);$j++){
        /*判断数组转换成字符串*/
        $a=implode($code[$i]);
        /*逆序*/
        $b=implode(array_reverse($code[$j]));
        /*判断字符串是否完全相同*/
        $res=strcasecmp($a,$b);
         if(empty($res)){
        $code[$i]=getgoods_code();
         }
 }
}
  $result=pdo_fetch("SELECT * FROM ".tablename('domall_zc_goods_code')." WHERE goods_id=:goods_id", array(':goods_id' =>$goods_id));
  if($result){
     message('该商品兑奖码已生成', $this->createWebUrl('goods'));

  }else{
    /*插入数据表*/
   for($i=0;$i<count($code);$i++){
         $data['goods_prizecode']=implode(',',$code[$i]);
         $data['goods_id']=$goods_id;
         $ret = pdo_insert('domall_zc_goods_code', $data);
}

  }
  message('兑奖码生成成功.', $this->createWebUrl('goods'), 'success');
}
/*生成兑奖码*/
 function getgoods_code(){
  $arr=array();
/*随机生成4个数并去重*/
while (count($arr)<4) {
    $arr[]=rand(1,33);
    $arr=array_unique($arr);
}
/*从小到大排列*/
 for($i=0;$i<count($arr);$i++){
      for($j=$i+1;$j<count($arr);$j++){
          $c=$arr[$i];
          $d=$arr[$j];
          if($c>$d){   
            $arr[$i]=$d;
            $arr[$j]=$c;
          }

      }
 }
 return $arr;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值