php 从一个数组中随机的取出若干个不同的数实例
随机从非重复数组中抽取元素:PHP实现方法
在PHP编程中,有时我们需要从一个不重复的数组中随机抽取若干个不同的元素。这看似简单,但实现起来却有一定的难度,尤其是在保证不会重复抽取到已经取出的元素时。今天,我将为大家介绍两种实现方法,希望能对大家有所帮助。
第一种方法:基于CSDN上的思路
这种方法主要是通过一个循环,在每次循环中随机生成一个数组索引,并将该索引对应的元素添加到结果数组中,然后从原数组中移除该元素。循环继续,直到抽取到指定数量的元素。
```php
$num = 0;
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
$arr = array();
$g = 5; // 需要抽取的元素数量
$tag = true;
while ($tag) {
$count = count($array);
$t = rand(0, 1);
if ($t == 1) {
$arr[] = $array[$num];
unset($array[$num]);
}
$num++;
if (count($arr) == $g) {
$tag = false;
}
if ($num == $count) {
$num = 0; // 循环索引
}
}
var_dump($arr); // 输出结果数组
```
第二种方法:自己的思路
这种方法的核心思想是在每次取出数据后,将该数据与未获取的数据进行替换,然后从未获取的数据中随机获取值。这样可以确保每次获取的都是未获取过的数据。
```php
function swap(&$a, &$b) {
$temp = $b;
$b = $a;
$a = $temp;
}
$result = array(); // 结果数组
$src = array(); // 源数组,初始化为需要抽取的元素的范围
for($i = 0; $i < 40; $i++) {
$src[] = $i + 1;
}
$arr_len = count($src); // 源数组长度
$count = 20; // 需要抽取的元素数量
$index = 0;
while($index < $count) {
$random = rand(0, $arr_len - $index - 1); // 随机生成索引
$result[] = $src[$random]; // 将该索引对应的元素添加到结果数组
swap($src[$random], $src[$arr_len - $index - 1]); // 将该元素与最后一个未获取的元素交换
$index += 1;
}
print_r(json_encode($result)); // 输出结果数组
print_r(json_encode($src)); // 输出源数组,可以看到未被获取的元素被移到了最后面
```
以上两种方法都能有效地实现从非重复数组中随机抽取元素的任务。感谢大家的阅读,希望这些方法能对大家有所帮助。也感谢大家对本站的支持!如果有任何疑问或建议,欢迎留言交流。
编程语言
- php 从一个数组中随机的取出若干个不同的数实例
- ASP.NET使用My97DatePicker日期控件实例
- vue日期组件 支持vue1.0和2.0
- PHP手机号码及邮箱正则表达式实例解析
- 解析PHP SPL标准库的用法(遍历目录,查找固定条件
- ASP中FSO的神奇功能 - 用FSO进行内容管理
- jquery实现搜索框常见效果的方法
- jQuery mobile的header和footer在点击屏幕的时候消失的
- 使用jQuery加载html页面到指定的div实现方法
- JavaScript中的null和undefined区别介绍
- 如何在ADSI中查询用户属性?
- 读取目录下的所有文件(包括子目录下的所有文件
- js实现超简单的展开、折叠目录代码
- JavaScript判断浏览器类型的方法
- 正则表达式、分组、子匹配(子模式)、非捕获
- Vue 项目中遇到的跨域问题及解决方法(后台php)