Насколько я знаю, 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 …)