-微擎之一元夺宝之随机生成兑奖码并插入数据库
(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;
}