在PHP编程过程中,经常会使用随机数或数组,但是如果需要生成不重复的随机数或数组就需要一些特殊的处理,本篇文章就来详细讲解PHP生成不重复随机数、数组的4种方法分享。
PHP生成不重复随机数、数组的4种方法分享
在PHP编程过程中,经常会使用随机数或数组,但是如果需要生成不重复的随机数或数组就需要一些特殊的处理,本篇文章就来详细讲解PHP生成不重复随机数、数组的4种方法分享。
方法一 array_unique+array_rand
这种方法先生成一个包含所有可能值的数组,再随机从中选取元素,使用array_unique()
函数去除重复元素,最后返回结果数组。
<?php
function unique_rand($min, $max, $num) {
$count = 0;
$return = array();
while ($count < $num) {
$return[] = mt_rand($min, $max);
$return = array_unique($return);
$count = count($return);
}
sort($return);
return $return;
}
使用示例:
$rand_arr = unique_rand(1, 100, 10);
print_r($rand_arr);
方法二 洗牌法
这种方法先生成一个包含所有可能值的数组,使用shuffle()
函数打乱数组顺序,然后选取前面几个元素作为生成结果,使用array_slice()
函数返回结果数组。
<?php
function shuffle_rand($min, $max, $num) {
$base_arr = range($min, $max);
shuffle($base_arr);
return array_slice($base_arr, 0, $num);
}
使用示例:
$rand_arr = shuffle_rand(1, 100, 10);
print_r($rand_arr);
方法三 while循环
这种方法先生成一个包含所有可能值的数组,然后循环生成指定数量的随机数,去除重复元素,直到达到目标数量为止,使用该方法需要保证可能值数量大于等于目标数量。
<?php
function while_rand($min, $max, $num) {
$base_arr = range($min, $max);
$return = array();
while (count($return) < $num) {
$rand = mt_rand($min, $max);
if (!in_array($rand, $return)) {
$return[] = $rand;
}
}
return $return;
}
使用示例:
$rand_arr = while_rand(1, 100, 10);
print_r($rand_arr);
方法四 for循环
这种方法使用for
循环从1到目标数量生成随机数,并检查是否重复。
<?php
function for_loop_rand($min, $max, $num) {
$return = array();
for ($i = 1; $i <= $num; $i++) {
$rand = mt_rand($min, $max);
while (in_array($rand, $return)) {
$rand = mt_rand($min, $max);
}
$return[] = $rand;
}
return $return;
}
使用示例:
$rand_arr = for_loop_rand(1, 100, 10);
print_r($rand_arr);
以上就是PHP生成不重复随机数、数组的4种方法分享,可以根据实际需要进行选择。
沃梦达教程
本文标题为:php生成不重复随机数、数组的4种方法分享


基础教程推荐
猜你喜欢
- php+mysql开发的最简单在线题库(在线做题系统)完整案例 2023-01-04
- Laravel修改验证提示信息为中文的示例 2023-03-08
- php去除deprecated的实例方法 2022-09-02
- PHP laravel使用自定义邮件类实现发送邮件 2023-07-03
- php生成短网址/短链接原理和用法实例分析 2023-04-20
- PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br 2024-03-28
- Laravel 解决composer相关操作提示php相关异常的问题 2023-03-08
- PHP采用get获取url汉字出现乱码的解决方法 2024-03-28
- php如何获取当前日期和星期 2024-12-06
- PHP基于反射机制实现自动依赖注入的方法详解 2022-10-02