Лучший способ случайного выбора пары ключей и значений из массива в PHP

Насколько я знаю, array_rand() может захватывать только массив radnom из массива:

 $array = array( 'apple', 'orange', 'banana' ); $two_random_items = array_rand( $array , 2 ); // outputs ie 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_values для «сбрасывания» ключей.

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

array_values ​​разделит ключи и вернет массив со значениями (ключи станут 0, 1, 2 …)