![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| namra |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 26.4.2007 Репутация: нет Всего: нет |
Здравствуйте, использую вот такой код для заполнения массива, нужно чтобы в массиве не было повторяющихся значений и чтобы в массиве было 5 элементов. Использовал функцию in_array выдаает ошибки
|
|||
|
||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
А зачем масив $mas?
В нем какие-то специальные значения или просто рандом? Это сообщение отредактировал(а) Arantir - 20.7.2013, 17:39 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| namra |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 26.4.2007 Репутация: нет Всего: нет |
в нем спец значения взятые из бд
|
|||
|
||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Ясно, тогда так
Это сообщение отредактировал(а) Arantir - 20.7.2013, 17:43 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| namra |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 26.4.2007 Репутация: нет Всего: нет |
я так понимаю ваш код меняет местами элементы массива, и сохраняет элементы с 0 по 5? а если в массиве будет 100 тыс. элементов перемешивать массиве разве будет не дольше, чем рандомно вытащить 5 элементов?
Это сообщение отредактировал(а) namra - 20.7.2013, 18:01 |
|||
|
||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Экстрасенса из меня делаете? Так и надо писать: "Нужен эффективный способ вытащить 5 случайных элементов из 100500 млрд.". Ну или, на худой конец, написать не "10 элементов", а "неопределенное неограниченное количество". А проверять 5 раз по 100 тыс. элементов через in_array() - это во сколько раз лучше? Для начала я бы сказал, что 100 тыс. строк в массив Вы точно вытаскивать не будете. Скорее всего сервер просто убьет такой скрипт из-за излишнего потребления памяти. Да и пользователю 100 тыс. строк за раз не покажешь, просто из разумных соображений. Опишите чуть подробнее что за данные и в чем суть выборки 5 случайных значений. Я почти уверен, что это нетрудно сделать с помощью самой БД и получить сразу 5 желаемых строчек. Добавлено @ 18:44 Если уж на то пошло, то почему Вы вытаскиваете по одному? Там второй аргумент не просто так присутствует.
array_rand - не тупо генератор чисел. Его суть как раз в том, что выдает подмассив заданного массива. То есть. если в заданном массиве все значения уникальны, то и в полученном они будут такими же. Но опять же, 100 тыс. строк лучше сразу на стороне БД обрабатывать. Да и даже 1000 передавать в PHP только ради выбора пяти - это не самый эффективный вариант. Это сообщение отредактировал(а) Arantir - 20.7.2013, 18:46 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| namra |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 26.4.2007 Репутация: нет Всего: нет |
про то что у array_rand второй элемент не просто так а может быть и 5 и 10 я понял, просто я так понимаю, вытащил бы я 5 элементов и вот проверяю с помощью foreach что в нем есть повторяющийся элемент мне придется его убирать из $test_mas и заново случайным образом вытаскивать из массива $mas это же сколько действий, яподумал что проще вытаскивае элемент из массива $mas проверять есть ли элемент в массиве $test_mas и уе если нет присваивать этот элемент массиву $test_mas
|
|||
|
||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Хорошему ответу предшествует хороший вопрос.
При использовании array_rand второе не имеет смысла, если имеет место первое... array_rand($arr, 2) никогда не выберет Вам некое число больше раза, если в массиве $arr оно такое только одно. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| namra |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 26.4.2007 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |