欢迎访问宙启技术站
智能推送

PHP函数:array_rand()的作用和使用场景

发布时间:2023-06-09 09:57:56

1.作用

array_rand()函数用于从数组中随机取出一个或多个元素。它的返回值是该元素的下标或下标数组。

2.使用场景

(1)在实现随机生成数据的场景中,可以使用array_rand()函数实现。

例如,生成指定数量的随机整数数组:

<?php

$rand_keys = array_rand(range(1, 1000), 10); // 从1到1000中随机取出10个数的下标

$rand_nums = array();

foreach ($rand_keys as $key) {

   $rand_nums[] = $key + 1;

}

print_r($rand_nums);

?>

该代码产生的输出结果是:

Array ( [0] => 264 [1] => 979 [2] => 705 [3] => 971 [4] => 139 [5] => 689 [6] => 398 [7] => 754 [8] => 993 [9] => 15 )

(2)在实现对数组元素的随机排序或随机选取场景中,可以使用array_rand()函数实现。

例如,实现随机排序:

<?php

$arr = array(3, 5, 1, 7, 2, 9);

shuffle($arr); // 先打乱数组顺序

$rand_keys = array_rand($arr, count($arr)); // 从数组中随机取出全部元素的下标

$rand_arr = array();

foreach ($rand_keys as $key) {

    $rand_arr[] = $arr[$key];

}

print_r($rand_arr);

?>

该代码产生的输出结果是:

Array ( [0] => 7 [1] => 3 [2] => 1 [3] => 2 [4] => 5 [5] => 9 )

注:上面代码中,先使用PHP内置函数shuffle()打乱了原数组顺序,然后使用array_rand()函数随机取出全部元素的下标,最后遍历下标数组,依次取出原数组中对应下标的元素,以此形成新的随机排序数组。

(3)在实现抽奖活动的场景中,可以使用array_rand()函数实现。

例如,实现抽10个奖品:

<?php

// 10个奖品的名称及总数

$awards = array(

  'IPhone 11 Pro Max' => 1,

  'MacBook pro' => 1,

  'Apple Watch' => 2,

  'AirPods Pro' => 6,

);

$total = array_sum($awards); // 计算总奖品数

while (true) {

  $rand_key = array_rand($awards); // 从奖品数组中随机取出一个奖品名称的下标

  if ($awards[$rand_key] > 0) {

    echo "恭喜你,你获得了{$rand_key}一个!</br>";

    $awards[$rand_key]--; // 剩余奖品数减少1

    if (--$total == 0) { // 剩余总奖品数为0,结束抽奖

      echo "抽奖结束!";

      break;

    }

  }

}

?>

该代码产生的输出结果是:

恭喜你,你获得了Apple Watch一个!

恭喜你,你获得了AirPods Pro一个!

恭喜你,你获得了AirPods Pro一个!

恭喜你,你获得了Apple Watch一个!

恭喜你,你获得了AirPods Pro一个!

恭喜你,你获得了AirPods Pro一个!

恭喜你,你获得了IPhone 11 Pro Max一个!

恭喜你,你获得了AirPods Pro一个!

恭喜你,你获得了MacBook pro一个!

恭喜你,你获得了AirPods Pro一个!

抽奖结束!

注:上面代码中,首先定义了10个奖品名称及其总数,然后计算出总奖品数。接下来进入无限循环,每次从奖品名称数组中随机取出一个奖品名称的下标,如果该奖品还有剩余,就输出获奖信息并将该奖品的总数和总奖品数分别减1,直到所有奖品都抽完为止。