Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Перемешать массив, и сохранить ключи
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 412
Пользователь №: 18633
На форуме: 7 лет, 9 месяцев, 16 дней
Карма:




Привет всем! Нужно перемешать массив рандомно, но сохранить ключи.
Например, чтоб из этого:
$array = array(
"1" => "text 1",
"2" => "text 2",
"3" => "text 3",
"4" => "text 4"
);


получилось так:
$array = array(
"2" => "text 2",
"1" => "text 1",
"4" => "text 4",
"3" => "text 3"
);

Помогите, пожалуйста)


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1784
Пользователь №: 20757
На форуме: 7 лет, 3 месяца, 22 дня
Карма: 186




PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5618
Пользователь №: 35718
На форуме: 4 года, 6 месяцев, 5 дней
Карма: 173




Цитата
Нужно перемешать массив рандомно, но сохранить ключи.

сама по себе задача безумна


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15351
Пользователь №: 4190
На форуме: 9 лет, 3 месяца, 19 дней
Карма: 467




savelikan, а какая вообще конечная цель?


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Hello  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 837
Пользователь №: 32378
На форуме: 5 лет, 14 дней
Карма: 50




function shuffle_assoc(array &$in) {
$result = array();
while ($key = array_rand($in)) {
$result[$key] = $in[$key];
unset($in[$key]);
}
$in = $result;
}


--------------------
VPS от 5$, первые 2 месяца - бесплатно.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 412
Пользователь №: 18633
На форуме: 7 лет, 9 месяцев, 16 дней
Карма:




Спасибо! Помогло!)


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5618
Пользователь №: 35718
На форуме: 4 года, 6 месяцев, 5 дней
Карма: 173




savelikan, вообще-то не за что. Если задача имеет идиотизмическое решение, то скорее всего ошЫбка была допущена еще раньше на уровне логики. Вы зря проигнорировали вопрос от sergeiss.


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15351
Пользователь №: 4190
На форуме: 9 лет, 3 месяца, 19 дней
Карма: 467




Цитата (Valick @ 30.12.2014 - 16:40)
Вы зря проигнорировали вопрос от sergeiss.

Не будь мелочным smile.gif Ведь "помогло" же. А будут другие проблемы, так он и будет их решать по мере поступления. Зачем сразу продумывать всё вперед?


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5618
Пользователь №: 35718
На форуме: 4 года, 6 месяцев, 5 дней
Карма: 173




Цитата
А будут другие проблемы, так он и будет их решать по мере поступления

это уже будут не решения, а костыли...
ну раз мелочным так мелочным (хотя лично для меня логическая ошибка, это как раз не мелочи, логика - это и есть программирование), мне пофиг


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15351
Пользователь №: 4190
На форуме: 9 лет, 3 месяца, 19 дней
Карма: 467




Цитата (Valick @ 30.12.2014 - 20:23)
это уже будут не решения, а костыли...

Ну так да smile.gif

Вот эти мои слова
Цитата (sergeiss @ 30.12.2014 - 19:01)
Зачем сразу продумывать всё вперед?

были сарказмом как раз по поводу грядущего "костыления".


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
mvg  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 474
Пользователь №: 37895
На форуме: 3 года, 9 месяцев, 25 дней
Карма: 22




Цитата (Hello @ 30.12.2014 - 13:29)
function shuffle_assoc(array &$in) {
$result = array();
while ($key = array_rand($in)) {
$result[$key] = $in[$key];
unset($in[$key]);
}
$in = $result;
}

1) Что если $key = array_rand($in) станет false до того как заполниться массив $result?
Т.е. я хотел сказать что алгоритм не оптимальный.

2) Воспользуйся функцией shuffle. Там по ссылке есть еще примеры подходящие:

<?php
function
shuffle_assoc(&$array) {
$keys = array_keys($array);

shuffle($keys);

foreach($keys as $key) {
$new[$key] = $array[$key];
}

$array = $new;

return true;
}
?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 412
Пользователь №: 18633
На форуме: 7 лет, 9 месяцев, 16 дней
Карма:




ДА все те же тесты делаю. Но другого типа.
Они сохраняються в базе: поле вопрос и ответы, каждая строка - новый ответ
Через explode разбиваю на строки как отдельный ответ.
Но нужно помнить ключи, чтоб засутуть их в INPUT (например 1-4-2-3)
А на странице результатов по них узнать в какой последовательности они были.
такой дже ИНПУТ и для вопросов, чтоб знать, какие 20вопросов из 100 было отображены.

логика - говно, но зато максимальное быстродействия.
Или вы предложыте что-то лучше?


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5618
Пользователь №: 35718
На форуме: 4 года, 6 месяцев, 5 дней
Карма: 173




не, походу дела вам всё-таки нужно наступить на грабли, пусть лучше в этих тестах
смачный "удар в лоб", будет гораздо эффективнее всех наших советов biggrin.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
savelikan  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 412
Пользователь №: 18633
На форуме: 7 лет, 9 месяцев, 16 дней
Карма:




Цитата (Valick @ 30.12.2014 - 22:39)
не, походу дела вам всё-таки нужно наступить на грабли, пусть лучше в этих тестах
смачный "удар в лоб", будет гораздо эффективнее всех наших советов biggrin.gif

Ну а если в двух словах - какая логика должна быть?


--------------------
Одесса - мой город!)))
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5618
Пользователь №: 35718
На форуме: 4 года, 6 месяцев, 5 дней
Карма: 173




savelikan, ну если в двух словах, то вам необходимо выучить "Правила нормализации БД". И основы построения реляционных баз данных.
первая таблица quest минимум два поля
q_id - идентификатор строки вопроса (авто инкремент)
q_qu - вопрос
далее можно создать поля автор, дата, и тд.

вторая таблица answer минимум 4 поля
a_id - идентификатор строки ответа (авто инкремент)
q_id - идентификатор вопроса
a_ri - флаг ответа 0 -неправильный, 1 - правильный
a_an - ответ

естественно еще должны быть таблицы пользователей и их ответов


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

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

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса