PHP生成唯一的促銷/優(yōu)惠/折扣碼(附源碼)
更新時間:2012年12月28日 10:57:24 作者:
每一個電子商務(wù)網(wǎng)站,現(xiàn)在有一種或多種類型的優(yōu)惠/折扣/優(yōu)惠券系統(tǒng),給大家分享一下如何在PHP生成唯一的促銷/折扣碼;因此,今天將討論這樣一個優(yōu)惠碼的實現(xiàn)過程,需要了解的朋友可以參考下
每一個電子商務(wù)網(wǎng)站,現(xiàn)在有一種或多種類型的優(yōu)惠/折扣/優(yōu)惠券系統(tǒng),給大家分享一下如何在PHP生成唯一的促銷/折扣碼。主要是實現(xiàn)一個優(yōu)惠碼系統(tǒng),可用于跟蹤用戶來自某些特定的來源,例如有些主機促銷的時候鏈接到別的頁面會有優(yōu)惠碼生成,還有更多的促銷代碼等。因此,今天將討論這樣一個優(yōu)惠碼的實現(xiàn)過程
考慮的需求
代碼應(yīng)該很容易記住,因此保持短的長度是一個好主意,使用戶可以很容易地記住它
沒有特殊字符!它應(yīng)該是字母數(shù)字組合,因為它會永遠是為用戶更容易記住
長度推廣/折扣代碼的正確。沒有一個標準的長度,因為它取決于你想生成的長度,例如,如果你想生成1000代碼的代碼,那么你需要在至少4個字符代碼。促銷/優(yōu)惠碼長度通常為4到8個字符,但它取決于您的要求。
那好吧,讓我們開始吧!讓我們來看看代碼,然后我會詳細解釋。它很容易
<?php
/**
* @param int $no_of_codes//定義一個int類型的參數(shù) 用來確定生成多少個優(yōu)惠碼
* @param array $exclude_codes_array//定義一個exclude_codes_array類型的數(shù)組
* @param int $code_length //定義一個code_length的參數(shù)來確定優(yōu)惠碼的長度
* @return array//返回數(shù)組
*/
function generate_promotion_code($no_of_codes,$exclude_codes_array='',$code_length = 4)
{
$characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$promotion_codes = array();//這個數(shù)組用來接收生成的優(yōu)惠碼
for($j = 0 ; $j < $no_of_codes; $j++)
{
$code = "";
for ($i = 0; $i < $code_length; $i++)
{
$code .= $characters[mt_rand(0, strlen($characters)-1)];
}
//如果生成的4位隨機數(shù)不再我們定義的$promotion_codes函數(shù)里面
if(!in_array($code,$promotion_codes))
{
if(is_array($exclude_codes_array))//
{
if(!in_array($code,$exclude_codes_array))//排除已經(jīng)使用的優(yōu)惠碼
{
$promotion_codes[$j] = $code;將生成的新優(yōu)惠碼賦值給promotion_codes數(shù)組
}
else
{
$j--;
}
}
else
{
$promotion_codes[$j] = $code;//將優(yōu)惠碼賦值給數(shù)組
}
}
else
{
$j--;
}
}
return $promotion_codes;
}
echo '<h1>Promotion / Discount Codes</h1>';
echo '<pre>';
print_r(generate_promotion_code(50,'',4));
echo '</pre>';
?>
該代碼由三個參數(shù)組成,
第一個參數(shù)是你要生成優(yōu)惠碼的個數(shù)(在這里是生成50個)。第二個參數(shù)exclude array,確保在當前列表中的生成唯一優(yōu)惠碼,所以如果你已經(jīng)數(shù)據(jù)庫中有一些未使用的代碼,你可以把它傳遞給exclude。最后一個參數(shù)是優(yōu)惠碼的的長度。這個函數(shù)將返回規(guī)定長度的優(yōu)惠碼 這里是4位的優(yōu)惠碼。
這里我已經(jīng)使用數(shù)字和大寫字母組合,賦值給$characters的字符串,你可以使用小寫字母或任何其他的字母組合試用。此功能的作用是生成唯一的優(yōu)惠碼。這個是PHP版本的,下一次給一個NET版本的,希望能幫助大家
下載地址
考慮的需求
代碼應(yīng)該很容易記住,因此保持短的長度是一個好主意,使用戶可以很容易地記住它
沒有特殊字符!它應(yīng)該是字母數(shù)字組合,因為它會永遠是為用戶更容易記住
長度推廣/折扣代碼的正確。沒有一個標準的長度,因為它取決于你想生成的長度,例如,如果你想生成1000代碼的代碼,那么你需要在至少4個字符代碼。促銷/優(yōu)惠碼長度通常為4到8個字符,但它取決于您的要求。
那好吧,讓我們開始吧!讓我們來看看代碼,然后我會詳細解釋。它很容易
復(fù)制代碼 代碼如下:
<?php
/**
* @param int $no_of_codes//定義一個int類型的參數(shù) 用來確定生成多少個優(yōu)惠碼
* @param array $exclude_codes_array//定義一個exclude_codes_array類型的數(shù)組
* @param int $code_length //定義一個code_length的參數(shù)來確定優(yōu)惠碼的長度
* @return array//返回數(shù)組
*/
function generate_promotion_code($no_of_codes,$exclude_codes_array='',$code_length = 4)
{
$characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$promotion_codes = array();//這個數(shù)組用來接收生成的優(yōu)惠碼
for($j = 0 ; $j < $no_of_codes; $j++)
{
$code = "";
for ($i = 0; $i < $code_length; $i++)
{
$code .= $characters[mt_rand(0, strlen($characters)-1)];
}
//如果生成的4位隨機數(shù)不再我們定義的$promotion_codes函數(shù)里面
if(!in_array($code,$promotion_codes))
{
if(is_array($exclude_codes_array))//
{
if(!in_array($code,$exclude_codes_array))//排除已經(jīng)使用的優(yōu)惠碼
{
$promotion_codes[$j] = $code;將生成的新優(yōu)惠碼賦值給promotion_codes數(shù)組
}
else
{
$j--;
}
}
else
{
$promotion_codes[$j] = $code;//將優(yōu)惠碼賦值給數(shù)組
}
}
else
{
$j--;
}
}
return $promotion_codes;
}
echo '<h1>Promotion / Discount Codes</h1>';
echo '<pre>';
print_r(generate_promotion_code(50,'',4));
echo '</pre>';
?>
該代碼由三個參數(shù)組成,
第一個參數(shù)是你要生成優(yōu)惠碼的個數(shù)(在這里是生成50個)。第二個參數(shù)exclude array,確保在當前列表中的生成唯一優(yōu)惠碼,所以如果你已經(jīng)數(shù)據(jù)庫中有一些未使用的代碼,你可以把它傳遞給exclude。最后一個參數(shù)是優(yōu)惠碼的的長度。這個函數(shù)將返回規(guī)定長度的優(yōu)惠碼 這里是4位的優(yōu)惠碼。
這里我已經(jīng)使用數(shù)字和大寫字母組合,賦值給$characters的字符串,你可以使用小寫字母或任何其他的字母組合試用。此功能的作用是生成唯一的優(yōu)惠碼。這個是PHP版本的,下一次給一個NET版本的,希望能幫助大家
下載地址
相關(guān)文章
php銀聯(lián)網(wǎng)頁支付實現(xiàn)方法
這篇文章主要介紹了php銀聯(lián)網(wǎng)頁支付實現(xiàn)方法,實例分析了php操作銀聯(lián)網(wǎng)支付接口的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03詳解WordPress開發(fā)中的get_post與get_posts函數(shù)使用
這篇文章主要介紹了WordPress開發(fā)中的get_post與get_posts函數(shù)使用,其中一般使用get_posts()函數(shù)來返回文章數(shù)組而較少使用get_post(),需要的朋友可以參考下2016-01-01