Приветствую вас дорогие друзья! В этой небольшой заметке я приведу пример решения одного из вопросов по PHP.
Данный вопрос был задан одним из читателей данного блога, суть вопроса (задачи) заключалась в следующем:
Имеется массив, содержащий тысячу различных чисел. Числа могут повторять, но точно известно, что в массиве имеются как минимум десять различных (встречающихся один раз) чисел. Среди всех чисел исходного массива выбрать и вывести на экран только 10 не повторяющихся чисел.
Решение задачи
Решить данную задачу можно по-разному, я приведу одно из решений – рассмотрим алгоритм:
- Создадим дополнительный массив
- Объявим переменную, с помощью которой будем выходить из цикла
- С помощью случайного числа будем выбирать случайный элемент исходного массива
- Проверим выбранное число на вхождение в дополнительный массив, и если не входит, то добавляем
- Если размер дополнительного массива равен 10 – значит выходим из цикла
- Выводим отобранные числа на экран
Теперь давайте рассмотри реализацию данного алгоритма на PHP:
<? $default_array = array(576, 1657, 7,...,983); //Исходный массив $new_array = array(); //Новый (дополнительный) массив $end = 0; //Флаг окончания выборки while( $end == 0 ){ $random = rand(1, 1000); //Случайное число от 1 до 1000 if ( !in_array($default_array[$random], $new_array) ) $new_array[] = $default_array[$random]; if( count($new_array) == 10 ) $end = 1; } //Выводим числа foreach( $new_array AS $item ){ echo $item.'<br>'; } ?>
- Переменная – “random” является индексом исходного массива.
- Как только размер нового массива будет равен десяти, то есть когда мы выбираем 10 различных чисел, то присваиваем переменной – “end” единицу (можно другое число отличное от нуля) и выходим из цикла
Я не стал перечислять все 1000 элементов исходного массива, чтобы сократить код.
На этом у меня все, желаю вам удачи, пока!
Если вам нужна помощь в создании какого-либо функционала, сайта, сервиса, тестов или калькуляторов, то готов помочь, подробнее на странице услуг.