如果不在意 key 的话,可以直接使用 array_unique 内置函数,如:
成都创新互联主营霍山网站建设的网络公司,主营网站建设方案,重庆APP开发,霍山h5重庆小程序开发搭建,霍山网站营销推广欢迎霍山等地区企业咨询
?php
$arr = array(1,1,2,1,5,9,9,6,7,8,8);
$unique = array_unique($arr)
var_dump($unique);
/*
输出
启清array(7) {
[0]=
int(1)
喊旁仿 [2]=
int(2)
郑纤 [4]=
int(5)
[5]=
int(9)
[7]=
int(6)
[8]=
int(7)
[9]=
int(8)
}
*/
建议平时多看看php官网的文档,希望有帮助。
下面写几种生成不重复随机数的方法,直接上代码吧
复制代码
代码如下:
?php
define('RANDOM_MAX',
100);
define('COUNT',
10);
echo
'max
random
num:
'.RANDOM_MAX,
'
;result
count:'.COUNT,
'br/罩桥空';
invoke_entry('rand1');
invoke_entry('rand2');
invoke_entry('rand3'消亩);
invoke_entry('rand4');
function
invoke_entry($func_name)
{
$time
=
new
time();
$time-time_start();
call_user_func($func_name);
echo
$func_name.'
time
spend:
',
$time-time_spend();
echo
'br/';
}
function
rand1()
{
$numbers
=
range
(1,
RANDOM_MAX);
shuffle($numbers); //随机打乱数组
$result
=
array_slice($numbers,
1,
COUNT);
return
$result;
}
function
rand2()
{
$result
=
array();
while(count($result)
COUNT)
{
$result[]
=
mt_rand(1,
RANDOM_MAX); //mt_rand()是比rand()更好更快的随机函数
$result
=
array_unique($result);
//删除数组中重复的元素
}
return
$result;
}
function
rand3()
{
$result
=
array();
while(count($result)
COUNT)
{
$_tmp
=
mt_rand(1,
RANDOM_MAX);
if(!in_array($_tmp,
$result))
{ //当数组中不存在相同的元素时,才允许插入
$result[]
=
$_tmp;
}
}
return
$result;
}
function
rand4()
{
$result
=
array();
while
(count($result)
COUNT)
{
$result[]
=
mt_rand(1,
RANDOM_MAX);
$result
=
array_flip(array_flip($result)); //array_flip将数组的key和value交换
}
return
$result;
}
class
time
{
private
$_start;
public
function
time_start()
{
$this-_start
=
$this-microtime_float();
}
public
function
time_spend()
{
return
$this-microtime_float()
-
$this-_start;
}
private
function
microtime_float()
{
list($usec,
$sec)
=
explode("
"物瞎,
microtime());
return
((float)$usec
+
(float)$sec);
}
}
?
你要数旁代码还是辩乱算法啊?
我就直接说下大概算法好了
假设有个数组里面有10个数字
然后你来个循环,10个数字10次也差不多了
for($i=0;$i10;$i++){
$a1=rand(0,9);//随机0到9的数字的
$a2=rand(0,9);
/*
*其实就是调换2个数字
*/
$j=$array[$a1];
$array[$a1]=$array[$a2];
$array[$a2]=$j;
}
循环十次携毕档,基本都打乱了,你的打乱没什么要求,所以这样应该符合要求了
array_unique函数可以去除态指滚逗陆重复,例如你的语句帆余可以修改为:
$arr=array_unique(array(1,1,2,1,5,9,9,6,7,8,8));
exit(json_encode($arr));