Fakir в работе над собой 24 Май 2002 #1 Выборка рандомно из массива Есть массив, в нем минимум 5 элементов максимум ~ Необходимо выбрать 5 записей массива, но не один не должен быть повторным, т.е. все разные. Как можно решить проблему? Заранее благодарен.
Выборка рандомно из массива Есть массив, в нем минимум 5 элементов максимум ~ Необходимо выбрать 5 записей массива, но не один не должен быть повторным, т.е. все разные. Как можно решить проблему? Заранее благодарен.
Demiurg Guest 24 Май 2002 #2 примерно так: PHP: $n = 5; $keys = array(); while(!$n) { $key = rand(0 , ...); if(!in_array($arr[$key] , $keys)) { echo $arr[$key].'<br>'; $n--; $keys[] = $key; } }
примерно так: PHP: $n = 5; $keys = array(); while(!$n) { $key = rand(0 , ...); if(!in_array($arr[$key] , $keys)) { echo $arr[$key].'<br>'; $n--; $keys[] = $key; } }
Fakir в работе над собой 24 Май 2002 #4 Tony, хммм... спасибо вот это то что надо... Я ни не знал shuffle().
tony2001 TeaM PHPClub 24 Май 2002 #6 там нигде не сказано, что результирующий набор содержит уникальные ключи. а с shuffle только так и получится.
там нигде не сказано, что результирующий набор содержит уникальные ключи. а с shuffle только так и получится.
Fakir в работе над собой 24 Май 2002 #7 Ан, нет, Tony не подошло. При наличии только 5-ти эл-тов в массиве, функция shuffle() как то не так работает как надо. Пример: PHP: $TmpArray = Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 [4] => 15 ); shuffle($TmpArray); for ($i=0; $i<4; $i++) { echo $TmpArray[$i]; } И он выдает такое: 11 12 12 13 15
Ан, нет, Tony не подошло. При наличии только 5-ти эл-тов в массиве, функция shuffle() как то не так работает как надо. Пример: PHP: $TmpArray = Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 [4] => 15 ); shuffle($TmpArray); for ($i=0; $i<4; $i++) { echo $TmpArray[$i]; } И он выдает такое: 11 12 12 13 15
Fakir в работе над собой 24 Май 2002 #8 ruslan, array_rand не подходит потому как он может повторять едл-ты массива, а мне это не надо.
tony2001 TeaM PHPClub 24 Май 2002 #9 void shuffle ( array array) This function shuffles (randomizes the order of the elements in) an array. You must use srand() to seed this function.
void shuffle ( array array) This function shuffles (randomizes the order of the elements in) an array. You must use srand() to seed this function.