在PHP中,从数组中随机选择键值对是一种更好的方法


A better way to randomly select a key and value pair from an array in PHP

据我所知,array_rand()只能从这样的数组中获取一个radnom数组:

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

但是,如何使用键值数组获取2个随机项目?像这样?

$array = array( '0' => 'apple', '1' => 'orange', '2' => 'banana' );
$rand_keys = array_rand($array, 2);
$rand_values = array();
foreach ($rand_keys as $key) {
    $rand_values[] .= $array[$key];
}

这可能不是正确的方式,而且需要大量的代码。

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

有没有更好的方法来实现这一点?

只需洗牌并切片2:

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

首先,这一行:$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…)