Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно выбрать один случайный!!! элемент массива, из повторяющихся элементов этого массива 
V
    Опции темы
slang
Дата 9.6.2007, 05:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 455
Регистрация: 7.3.2004

Репутация: -1
Всего: 0



Не могу сообразить как реализовать такую весчь...
Есть многомерный ассоциативный массив, например test[kod][name]. В нем могут повторяться name (одно название теста для нескольких вариантов). Мне необходимо оставить один элемент массива из повторяющихся, при этом это должен быть СЛУЧАЙНЫЙ выбор, а не результат array_unique().


--------------------
Запчасти на иномарки www.avtograd55.ru.
Если есть время - зайдите и посоветуйте что исправить и что доработать.
PM MAIL WWW ICQ   Вверх
slang
Дата 9.6.2007, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 455
Регистрация: 7.3.2004

Репутация: -1
Всего: 0



Вроде "дошло", как это сделать, по крайней мере на стадии алгоритма вроде понятно:
1. Выбрать из БД список тестов (только наименование) в массив test_name
2. Удалить повторяющиеся значения из массива test_name
3. Выбрать из БД все элементы, равные test_name(n) и занести в массив test_id значения id из БД
4. Перемешать элементы массива test_id
5. Вернуть значение первого элемента test_id для вывода теста
6. Перейти к 3-му пункту


--------------------
Запчасти на иномарки www.avtograd55.ru.
Если есть время - зайдите и посоветуйте что исправить и что доработать.
PM MAIL WWW ICQ   Вверх
Golda
Дата 9.6.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42





--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
slang
Дата 10.6.2007, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 455
Регистрация: 7.3.2004

Репутация: -1
Всего: 0



Вот, примерно, что получается:
Код

function test_list()    {
// Список тестов с сылками на них
    print ("<BR><BR>Выберите, пожалуйста, тест:");
    // Получение списка названий тестов
    $sql_t = "SELECT name FROM test WHERE vopros_this=0 AND otvet_this=0";
    db_query($sql_t);
    while ($test_name = mysql_fetch_array($sql_t)){
        $test_n[] = $test_name['name'];
    }
    $test_name = array_unique($test_n);
    foreach ($test_name as $name)    {
        $sql_t = "SELECT * FROM test WHERE id=" . id_test($name);
        db_query($sql_t);
        while ($test = mysql_fetch_assoc($sql_t)) {
            if ($test['vopros_this'] == "0" && $test['otvet_this'] == "0")    {
                print "<BR><B><a href='?test=" . $test['test_this'] . "'>". $test['name'] . "</a></B>";
            }
        }
    }
}
function id_test($test_name)    {
    $sql_t = "SELECT id FROM test WHERE name='" . $test_name . "'";
    db_query($sql_t);
    while ($test_id = mysql_fetch_array($sql_t)){
        $t_id[]=$test_id['id'];
    }
    srand ((float)microtime()*1000000);
    shuffle($t_id);
    return $t_id[0];    
}

array_rand - удобная функция, но в моем случае, она заменяет только последние две строки последней функции:
Код

    shuffle($t_id);
    return $t_id[0];

так как она ведь не может выбрать случайное среди повторяющихся smile


--------------------
Запчасти на иномарки www.avtograd55.ru.
Если есть время - зайдите и посоветуйте что исправить и что доработать.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0918 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.