쿠폰발행 로직을 짜고싶습니다.
본문
쿠폰 안에 들어갈값들은 아래와같습니다.
$couponArray=array(
0=>"0",1=>"1",2=>"2",3=>"3",4=>"4",5=>"5",6=>"6",7=>"7",8=>"8",9=>"9",
10=>"A",11=>"B",12=>"C",13=>"D",14=>"E",15=>"F",16=>"G",17=>"H",18=>"I",19=>"J",
20=>"K",21=>"L",22=>"M",23=>"N",24=>"O",25=>"P",26=>"Q",27=>"R",28=>"S",29=>"T",
30=>"U",31=>"V",32=>"W",33=>"X",34=>"Y",35=>"Z"
);
위값으로 6~10자리정도의 쿠폰을 랜덤으로 만들고싶은데 어떻게 할수있을까여
고수님들 답변기다립니다
답변 2
<?php
function acoupon($couponNum) {
$couponArray=array(
0=>"0",1=>"1",2=>"2",3=>"3",4=>"4",5=>"5",6=>"6",7=>"7",8=>"8",9=>"9",
10=>"A",11=>"B",12=>"C",13=>"D",14=>"E",15=>"F",16=>"G",17=>"H",18=>"I",19=>"J",
20=>"K",21=>"L",22=>"M",23=>"N",24=>"O",25=>"P",26=>"Q",27=>"R",28=>"S",29=>"T",
30=>"U",31=>"V",32=>"W",33=>"X",34=>"Y",35=>"Z"
);
mt_srand(microtime(true)*1000000); //난수값 초기화
for($k=0;$k<$couponNum;$k++){ //생성 할 쿠폰의 갯수
$resultStr="";
for($i=0;$i<10;$i++){ //생성할 쿠폰의 자릿수 반드시 짝수여야 암호화된 뒷자리를 얻을 수 있다.
$randNo = rand(0,35); //0과 35사이의 난수를 구한다
$resultStr .= $couponArray[$randNo];
}
$numArray=array_flip($couponArray); //키와 값을 바꾼다
$incodeNum="";
for ($ab=0;$ab<5;$ab++){
$enum_first=substr($resultStr,0+$ab,1);
$enum_second=substr($resultStr,5+$ab,1);
$sum_enum=$numArray[$enum_first]+$numArray[$enum_second];
$in_num=$sum_enum % 35;
$incodeNum=$incodeNum.$couponArray[$in_num];
}
echo "============================="."<br>";
echo substr($resultStr,0,5)."-".substr($resultStr,5,5)."-".$incodeNum."<br>";
echo "============================="."<br>";
//$mt= microtime(true);
//print $mt."<br>";
}
}
acoupon(10);
// ----------------------------------------
$time_end = microtime(true);
echo $time_start."<br>";
echo $time_end."<br>";
$difftime = $time_end - $time_start;
$difftime = $difftime;
echo "Processing Time : $difftime sec";
php의 shuffle 함수를 이용하여 섞은뒤 원하시는 자릿수 대로 뽑으시면 될것같습니다ㅎㅎ
답변을 작성하시기 전에 로그인 해주세요.