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