Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Нужно вывести случайный набор строк


Автор: bork 3.9.2012, 22:36
Есть, например, 10 строк с текстом (будут записаны в этом же php, можно каждую записать в отдельную переменную)
Нужно вывести 5 случайных строк без повторов при каждом обновлении страницы.

Автор: ksnk 3.9.2012, 22:57
Ну и в чем дело? 
Помешаем все строки в массив.
Сочиняем 5 чисел. Первое rand(10), второе rand(9), ... пятое rand(6).
Для каждого числа берем из массива по числу-индексу и ставим на его место последний элемент массива. и так далее все 5 раз.
Profit!

Автор: bork 3.9.2012, 23:04
Если не сложно, скиньте пример.

Автор: s1lver 5.9.2012, 07:29
Цитата(bork @ 3.9.2012,  23:04)
Если не сложно, скиньте пример.

Как насчет этого?


Код

<?
$mass = array("Строка1" =>1,
                "Строка2"=>2,
                "Строка3"=>3,
                "Строка4"=>4,
                "Строка5"=>5,
                "Строка6"=>6,
                "Строка7"=>7,
                "Строка8"=>8,
                "Строка9"=>9,
                "Строка10"=>10
            );
      
      $m1=rand(0,10);
      $m2=rand(0,9);
      $m3=rand(0,8);
      $m4=rand(0,7);
      $m5=rand(0,6);
      
      echo array_search($m1,$mass)."<br/>";
      echo array_search($m2,$mass)."<br/>";
      echo array_search($m3,$mass)."<br/>";
      echo array_search($m4,$mass)."<br/>";
      echo array_search($m5,$mass);
?>


Автор: Gold Dragon 5.9.2012, 07:44
а если строки в базе данных то вообще никаких проблем с выборкой нет smile

Автор: s1lver 5.9.2012, 07:45
Хотя, скорее всего, в моем примере повторения будут...

Автор: ksnk 5.9.2012, 08:30
Неужели я настолько невразумительно описал алгоритм?
Код

$mass = array("Строка1",
                "Строка2",
                "Строка3",
                "Строка4",
                "Строка5",
                "Строка6",
                "Строка7",
                "Строка8",
                "Строка9",
                "Строка10"
            );

function randStr(&$arr,$max){
   $idx=rand(0,$max);
   $result=$arr[$idx];
   if ($idx!=$max) $arr[$idx]=$arr[$max];
   return $result;
}

echo randStr($mass ,9)."<br/>";
echo randStr($mass ,8)."<br/>";
echo randStr($mass ,7)."<br/>";
echo randStr($mass ,6)."<br/>";
echo randStr($mass ,5)."<br/>";

Автор: s1lver 5.9.2012, 08:48
Цитата

Неужели я настолько невразумительно описал алгоритм?


Я вообще не то написал... smile 



 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)