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. echo '<pre>';
  9. var_dump(array_rand($array));
  10. var_dump(array_rand($array, 2));
  11. var_dump(array_rand($array, 2));
  12. var_dump(array_rand($array, 5));
  13. ?>

运行结果如下:

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 的值换成一个个中文字符的话,还能实现类似中文验证码的功能。 

原文地址:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值