闲的蛋疼的时候,顺便加强下自己对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); ?>
以上所述就是本文的全部内容了,希望大家能够喜欢。
本文地址:https://www.stayed.cn/item/13796
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我