1. 程式人生 > >PHP 使用陣列隨機生成4位驗證碼

PHP 使用陣列隨機生成4位驗證碼

我們要生成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;

?>