闲的蛋疼的时候,顺便加强下自己对php中数组操纵的一些技巧,就写了下面的一段小代码,可以随机生成卡号密码对应的数组,并且自动去重复,思路没有,纯粹瞎掰。
<?php header('content-type:text/html; charset=utf-8');
function makecard()
{
set_time_limit(0);
//处理缓冲区
ob_end_clean();
ob_implicit_flush(true);
echo str_pad(" ", 256);
if(intval($_post['num']>0)) $num=intval($_post['num']); //数量
if(intval($_post['point']>0)) $point=intval($_post['point']); //点数
if(intval($_post['batch']>0)) $batch=intval($_post['batch']); //批号
if(($_post['ym']!="")) $ym=$_post['ym']; //发行年月
else $ym=date('ym');
if($num==0) return;
$num=$num*100; //卡的张数,即记录数
echo "<p>开始 ".date("h:i:s")." ";
for($i=1;$i<=$num;$i++)
{
$sn=sprintf("%02s%s%06s",$batch,$ym,$i);
$seek=mt_rand(0,9999).mt_rand(0,9999).mt_rand(0,9999); //12位
$start=mt_rand(0,20);
$str=strtoupper(substr(md5($seek),$start,12));
$str=str_replace("o",chr(mt_rand(65,78)),$str);
$str=str_replace("0",chr(mt_rand(65,78)),$str);
$row=array('sn'=>$sn,'password'=>$str,'created'=>time(),'point'=>$point);
//查重
//在这里加插入数据的代码.
print_r($row);
}
echo " 结束 ".date("h:i:s")."";
printf("<br>成功生成:%s万个 %s点 的密码</p>",$num/1e4,$point);
return $num;
} //函数结束
$_post['num']=1;
$_post['point']=10;
$_post['batch']=10;
$_post['ym']='1405';
echo makecard(); ?>
方法二:
<?php
$numlen=16;
$pwdlen=10;
$c=100;//生成100组卡号密码
$snumarr=range(0,9);
$spwdarr=array_merge($snumarr,range('a','z'));
$cards=array();
for($x=0;$x< $c;$x++){
$tempnumstr=array();
for($i=0;$i< $numlen;$i++){
$tempnumstr[]=array_rand($snumarr);
}
$temppwdstr=array();
for($i=0;$i< $pwdlen;$i++){
$temppwdstr[]=$spwdarr[array_rand($spwdarr)];
}
$cards[$x]['no']=implode('',$tempnumstr);
$cards[$x]['pwd']=implode('',$temppwdstr);
}
array_unique($cards);
print_r($cards);
?>
以上所述就是本文的全部内容了,希望大家能够喜欢。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!