要从一个数组中随机取出若干个不同的数有很多种方法,这里共享两种常用的实现方式,供大家参考。
方法一:使用 array_rand 函数
array_rand
是 PHP 中的一个内置函数,旨在从数组中随机选取一个或多个键名,返回键名或键名列表:
mixed array_rand ( array $array [, int $num = 1 ] )
其中参数1 $array
表示要从中选取键名的数组,参数2 $num
表示选取的键名数量(默认为1)。
基于此,我们可以将这些键名对应的数组值取出来,组成一个新数组,从而实现随机选取若干个不同元素的目的。
示例代码如下:
<?php
$sourceArr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$randKeys = array_rand($sourceArr, 3);
$outputArr = array();
foreach ($randKeys as $key) {
$outputArr[] = $sourceArr[$key];
}
print_r($outputArr);
?>
解释一下上面的代码:
-
我们首先定义了一个数组 $sourceArr,存储一个由 1~10 这 10个整数构成的序列。
-
然后调用
array_rand($sourceArr, 3)
,表示从 $sourceArr 数组中取出 3 个键名。 -
$randKeys
变量将返回所选取的 3 个键名。注意,这里$randKeys
是一个整数索引数组。 -
我们通过
foreach
循环遍历 $randKeys 数组,以每个键名为下标,从 $sourceArr 数组中取出对应的元素,存储在 $outputArr 数组中。 -
最后,我们可以通过
print_r($outputArr)
将结果输出到浏览器。
方法二:使用 shuffle 函数
另外一种实现方式是使用 shuffle 函数。此函数支持原地打乱一个数组中的元素排序,从而让每个元素被等概率地随机选择。
示例代码如下:
<?php
$sourceArr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$outputArr = array();
shuffle($sourceArr);
$count = 3;
for ($i = 0; $i < $count; $i++) {
$outputArr[] = $sourceArr[$i];
}
print_r($outputArr);
?>
解释一下上面的代码:
-
同样地,我们首先定义了一个数组 $sourceArr,存储一个由 1~10 这 10 个整数构成的序列。
-
调用
shuffle($sourceArr)
函数,表示打乱 $sourceArr 数组元素的顺序。 -
接着,我们定义一个循环,用于从 $sourceArr 数组中取出 $count 个元素。在每次循环中,我们依次取到 $sourceArr 数组中前 $count 个元素,存储到 $outputArr 数组中。
-
最后,我们可以通过
print_r($outputArr)
输出结果。
总结来说,从一个数组中随机选取不同元素的实现方式主要有两种:使用 array_rand 函数或使用 shuffle 函数。需要根据具体的场景选择合适的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 从一个数组中随机的取出若干个不同的数实例 - Python技术站