PHP 使用陣列隨機生成4位驗證碼
阿新 • • 發佈:2018-12-06
我們要生成4位隨機驗證碼,首先要在A-Z,a-z,0-9之間隨機產生4位。此時我們會用到一個函式range(),這個函式是建立一個包含指定範圍單元的陣列,返回型別為陣列。程式碼如下:
<?php
$arr1 = range('a','z');
$arr2 = range('A','Z');
$arr3 = range(0,9);
//產生指定範圍內的陣列並輸出
print_r($arr1);
print_r($arr2);
print_r($arr3);
?>
然後我們需要將這些範圍內的值合併到一個數組中,此時我們需要的函式是:array_merge(),這個函式是將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面,返回結果同樣為陣列。程式碼如下:
<?php
$arr = array_merge($arr1,$arr2,$arr3);
print_r($arr);//合併將輸出
?>
用到這人函式時應注意:如果陣列的鍵為相同的數字時,後一個數組中的值並不會覆蓋前一個的值;但如是陣列的鍵為相同的字串時,則後一個數組中的值將會覆蓋前一個的值。
舉個例子:
<?php $a1=array("a"=>"red","b"=>"green"); $a2=array("c"=>"blue","b"=>"yellow"); print_r(array_merge($a1,$a2)); ?>
輸出結果為:
但是如果鍵為數字時,這樣的情況將不會出現中,舉個例子:
<?php
$arr1 = array(1 => '張三',2 => '李四', 5 => '王五');
$arr2 = array(2 => '孫七', 7 => '劉八', 8 => '周九');
print_r(array_merge($arr1,$arr2));
?>
輸出結果為:
如果你想完全保留原有的陣列並只想新的陣列附加到後面,用+運算子。
下一步我們需要隨機從中抽取4個元素,應使用的函式為array_rand(),這個函式是從陣列中隨機取出一個或多個隨機的單元,並支架隨機條目的一個或多個鍵。
具體程式碼如下:
<?php
$keys = array_rand($arr,4);
?>
再利用foreach迴圈隨機產生4位即可,總的程式碼如下:
<?php
header('content-type:text/html;charset=utf-8');
$arr1 = range('a','z');
$arr2 = range('A','Z');
$arr3 = range(0,9);
$arr = array_merge($arr1,$arr2,$arr3);
//隨機從中抽取4個元素
$keys = array_rand($arr,4);
$yzm = '';
foreach($keys as $k ){
$yzm .= $arr[$k];
}
echo $yzm;
?>