PHP array_rand():随机获取数组元素

随机获取数组元素就是在不改变数组的基础上,从数组中随机的选取一个或多个元素,比如我们在网页上随机显示不同的广告,或者推荐不同的文章等等,PHP 中提供了 array_rand() 函数来帮助我们完成这一功能,下面就来详细介绍一下这个函数。

array_rand() 函数可以从数组中随机获取一个或多个元素,并返回获取的数组键值。该函数使用了伪随机数产生算法,所以不适合密码学场景,其语法格式如下:

array_rand($array [, $num = 1])

其中,$array 为待操作的数组;$num 为可选参数,用于指明想要从 $array 中获取多少个数组元素。

提示:如果省略 $num 参数,函数默认会返回一个随机的数组键名,如果获取的数量($num)超过了 $array 的长度,就会导致 E_WARNING 错误,并返回 NULL。

如果只需要获取一个元素,array_rand() 函数会返回获取到的键名,否则就返回包含随机键名的数组。函数运行成功后,就可以根据随机获取到的数组键值来获取具体的值。

【示例】使用 array_rand() 函数随机获取数组元素。


		
  1. <?php
  2. $array = array(
  3. 'name' => 'C语言中文网',
  4. 'url' => 'http://c.biancheng.net/php/',
  5. 'title' => 'PHP教程',
  6. 'article' => 'array_rand() 函数'
  7. );
  8.  
  9. echo '<pre>';
  10. var_dump(array_rand($array));
  11. var_dump(array_rand($array, 2));
  12. var_dump(array_rand($array, 2));
  13. var_dump(array_rand($array, 5));
  14. ?>

运行结果如下:

string(7) "article"
array(2) {
  [0]=>
  string(3) "url"
  [1]=>
  string(5) "title"
}
array(2) {
  [0]=>
  string(4) "name"
  [1]=>
  string(3) "url"
}
NULL

鉴于 array_rand() 函数的特点,我们可以使用它来实现生成随机验证码的功能,代码如下所示:


		
  1. <?php
  2. function verCode(){
  3. $arr = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h','i', 'j', 'k',
  4. 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's','t', 'u', 'v',
  5. 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D','E', 'F', 'G',
  6. 'H', 'I', 'J', 'K', 'L','M', 'N', 'O', 'P', 'Q', 'R',
  7. 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z', '0', '1', '2',
  8. '3', '4', '5', '6', '7', '8', '9'
  9. );
  10. $newArr = array_rand($arr, 4);
  11. $str = '';
  12. foreach ($newArr as $key => $value) {
  13. $str .= $arr[$value];
  14. }
  15. return $str;
  16. }
  17. echo verCode().'<br>';
  18. echo verCode().'<br>';
  19. echo verCode().'<br>';
  20. ?>

运行结果如下:

EFG5
jIO0
pw56

如果将自定义函数 verCode() 中数组 $arr 的值换成一个个中文字符的话,还能实现类似中文验证码的功能。 

浏览次数:  更新时间:2020-11-10 11:51:12  【关闭
上一条:前端设计 PHP标签 模板  下一条:PHP shuffle():随机打乱数组

相关新闻

卓成网络语言选择:   English    Deutsch    中文繁体   русский   français   Español   Ελληνικά   日本人   अरबी   हिंदी   한국어    italiano   Tiếng Việt
Copyright © 2004 - 2029  जुओ चेंग-版权所有 | 投诉电话:+91 11 42500201
营销网站建设 定制网站开发  网站托管 出口公司网站建设 外贸网站建设 外贸soho网站建设 企业邮箱 深圳网站建设 孟买网站建设公司 荆州网站建设公司 宜昌网站建设 荆州企业建站 孟买网站建设 荆门网站建设 宜昌高端定制网站  宜昌企业邮箱 荆州企业邮箱 荆门企业邮箱 咸宁网站建设 武汉网站建设 广州网站建设 北京网站建设 随州网站建设 黄冈网站建设 宜昌外贸网站建设 香港网站建设 全国网站建设开发 广州网站建设 上海网站建设 杭州网站建设 西安网站建设 惠州网站建设 黄江网站建设 桂林网站建设 鸡西网站建设 郑州网站建设 澳门网站建设