2015-11-03 28 views
1

一个键值对,据我知道array_rand()只能从这样的数组抢radnom阵列:一种更好的方式随机选择从一个数组在PHP

$array = array('apple', 'orange', 'banana'); 
$two_random_items = array_rand($array , 2); // outputs i.e. orange and banana 

但我怎么能抢2随机项目,但与键值数组?喜欢这个?

​​

这可能不是正确的方法,它是很多的代码。

我有一个大数组,这只是一个例子,我需要从父数组中随机获取1000+或更多的项目,并将它们放入一个新数组中,可以重置键,这并不重要。价值部分必须保持不变,当然。

有没有更好的方法来实现这个目标?

+0

@KA_lin可以在发布一个更明确的答案,tahnks –

+0

对不起,没有阅读直到结束。 –

+0

从数据库使用rand,还是仅在内存中需要? – Laurentiu

回答

2

只是洗牌和切片2:

shuffle($array); 
$rand_values = array_slice($array, 0, 2); 
0

首先,这条线:$rand_values[] .= $array[$key];是错误的。 .=运算符是加入字符串,为该数组的末尾添加一个值,您只需要$rand_values[] = $array[$key];

如果您不关心按键,只需使用array_values函数“转储”按键。

$array = array('a' => 'orange', 'c' => 'banana', 'b' => 'peach'); 
$two_random_items = array_rand(array_values($array) , 2); 

array_values将剥离下来的键,并且将返回一个数组与值(各键将变为0,1,2 ...)如果可能的话