据我所知,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…)