Конструирование ссылки со случайными элементами

Тема в разделе "PHP", создана пользователем Xonres, 14 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Xonres

    Xonres

    Регистр.:
    13 ноя 2006
    Сообщения:
    204
    Симпатии:
    12
    http://ya.ru/go.php?x,y,z,t,v
    В ссылке, которая представлена выше, числа x, y, z, t, v должны менятся на случайно выбранные.

    То есть сслыка должна каждый раз быть то
    http://ya.ru/go.php?3,2,4,5,9
    то
    http://ya.ru/go.php?1,4,2,6,3

    Числа не случайные, а выбираются из заранее заданного массива, и не должны повторятся.

    Как это можно сделать? Благодарю за внимание :)
     
  2. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    например, используй функцию rand();
    PHP:
    $array = array(124570); //Твой массив с числами
    $rand rand(0count($array)); //Выбираем случайное число от 0 до %кол-во_элеметнов_массива%
    echo $array[$rand]; //Выводим случайный элемент масива
     
    Xonres нравится это.
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Помещаете все заранее заданные числа в массив. Индексы у массива задаете от нуля, увеличивая на единичку.
    Затем случайным образом генерируете число от нуля до количества элементов массива.
    Полученное число (например 5) - это есть ваш номер элемента массива. Выбираете элемент массива под номером 5. Вставляете это число в вашу ссылку.
    Удаляете этот элемент массива. В итоге количество элементов массива становится меньше на единичку.
    Затем снова random'om генерируете число и получаете новый элемент массива....
    И так пока не надоест...
     
    Xonres нравится это.
  4. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    PHP:
    <?php
    $array 
    = array(1234567890);
    srand ((float)microtime()*1000000);
    shuffle($array);
    $url="http://ya.ru/go.php?".implode('.',array_slice($array,5));
    ?>
     
    Xonres нравится это.
  5. Xonres

    Xonres

    Регистр.:
    13 ноя 2006
    Сообщения:
    204
    Симпатии:
    12
    Код:
    	
    foreach ($sourcesList as $sourceData) {
    	echo $sourceData[id];
    	echo ",";
    }
    Результатом этого цикла стала строка
    1,2,3,4,5,6,7,8,9,10,11,12

    Можно ли как то этот результат занести сюда
    $array = array();
    что бы не заносить вручную? Что бы получилось как бы
    $array = array(1,2,3,4,5,6,7,8,9,10,11,12);
     
  6. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    PHP:
    $str="1,2,3,4,5,6,7,8,9,10,11,12";
    $array=explode(",",$str); //занести в массив строку с разделителем "запятая"
    $array range (1,20); // в массиве будут числа от 1 до 20
     
  7. Xonres

    Xonres

    Регистр.:
    13 ноя 2006
    Сообщения:
    204
    Симпатии:
    12
    По идее нужна конструкция сутью которой будет следующее выражение, которое хотя и не работает, то должно дать понять о чем речь :)
    PHP:
        $urlnew 
            foreach (
    $sourcesList as $sourceData) {echo $sourceData[id];}
        ;
    Как переменной присвоить результат цикла?

    UPD:
    Разобрался :)
    PHP:
    $a = array();
    foreach (
    $sourcesList as $sourceData
    {
    $a[] = $sourceData['id'];
    $string = join(',', $a);
     
Статус темы:
Закрыта.