如何在php中编写带前缀的唯一优惠券代码

时间:2018-07-04 08:27:15

标签: php

我正在尝试编写带前缀的唯一优惠券代码,以便有机会成为一家公司的实习生。到目前为止进展顺利,每次刷新页面时,我的代码都会生成250个长度为10的代码。但是,我正在发布带有前缀部分的问题。通常,优惠券代码看起来像这样,只是一个示例“ 1SC476XY3B”,但我希望每个代码都以“ AB”开头,然后是8个代码长度,因此总数为10。您能帮我吗?所有帮助将不胜感激,谢谢。

<?php

function unique_coupon_codes($number_of_codes,$exclude_codes_array='',$code_length = 10)
{

$characters = "0123456789QWERTYUIOPASDFGHJKLZXCVBNM";

$unique_codes = array();
for($j = 1 ; $j <= $number_of_codes; $j++)
{
    $code = "";
    for ($i = 1; $i <= $code_length; $i++)
    {
        $code .= $characters[mt_rand(0, strlen($characters)-1)];
    }

    if(!in_array($code,$unique_codes))
    {
        if(is_array($exclude_codes_array))
        {
            if(!in_array($code,$exclude_codes_array))
            {
                $unique_codes[$j] = $code;
            }
            else
            {
                $j--;
            }
        }
        else
        {
            $unique_codes[$j] = $code;
        }
    }
    else
    {
        $j--;
    }
}
return $unique_codes;
}

echo '<h1>Unique Coupon Codes</h1>';
echo '<pre>';
print_r(unique_coupon_codes(250,'',10));
echo '</pre>';

2 个答案:

答案 0 :(得分:0)

在初始化$code变量时,需要进行一些小的更改。将$code = "";更改为$code = "AB";并以

调用unique_coupon_codes函数
print_r(unique_coupon_codes(250, '', 8));

由于您已经有了长度为2个字符的前缀AB,因此这里将生成8位数字的唯一代码。

答案 1 :(得分:0)

这样的事情怎么样? :-)

function unique_coupon_codes($number_of_codes,$exclude_codes_array=[],$code_length = 10, $code_prefix="") {
   $characters="0123456789QWERTYUIOPASDFGHJKLZXCVBNM";
   $unique_codes = array();
   for($i=1;$i<=$number_of_codes;$i++) {
      $code="";
      for($o=1;$o<=$code_length;$o++) {
         $code .= $characters[mt_rand(0, strlen($characters)-1)];
      }
      if(in_array($code, $unique_codes) || in_array($code, $exclude_codes_array)) {
         $i--;
      } else {
         $unique_codes[$i] = $code_prefix.$code;
      }
   }
   return $unique_codes;
}

echo '<h1>Unique Coupon Codes</h1>';
echo '<pre>';
print_r(unique_coupon_codes(250,'',8, 'AB'));
echo '</pre>';