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


Автор: PARROT 7.5.2005, 22:12
Мысль:
Например:
Есть n-число ссылок, например 10, нужно сгенерировать их в случайном порядке, печататься должна на странице только одна ссылка.
При обновлении страницы, другая и т.д. smile

Автор: Irokez 7.5.2005, 22:22
shuffle()?

Автор: Mal Hack 7.5.2005, 22:26
Ссылки в массив, а далее
array_rand или сама через mt_rand

Автор: PARROT 7.5.2005, 22:32
Уже лучше, но печатаются все 4 ссылки, потом еще нужно чтобы названия тоже были разные. smile
Код

$numbers =array(control,alis,vesna,edit);
srand ((float)microtime()*1000000);
shuffle ($numbers);
while (list (, $number) = each ($numbers)) {
    echo "<a href=$number.php>Ссылка</a> ";
}

Автор: PARROT 7.5.2005, 23:42
Ну вот, работает! Всем спасибо!
Код

<?
$soun =array(контроль,алисы,весна,редактировать);
$numbers =array(control,alis,vesna,edit);
$kar=mt_rand(0,3);
mt_srand(time()+(double)microtime()*$kar);
$i=mt_rand(0,count($numbers));
$i=mt_rand(0,count($soun));
echo "<a href=$numbers[$i].php>$soun[$i]</a>";
?>

Автор: Mal Hack 8.5.2005, 09:20
Цитата(PARROT @ 8.5.2005, 00:42)
$kar=mt_rand(0,3);
mt_srand(time()+(double)microtime()*$kar);
$i=mt_rand(0,count($numbers));

Лишнее.

Автор: PARROT 8.5.2005, 09:48
Код

$soun =array(контроль,алисы,весна,редактировать);
$numbers =array(control,alis,vesna,edit);
$i=mt_rand(0,count($numbers));
$i=mt_rand(0,count($soun));
echo "<a href=$numbers[$i].php>$soun[$i]</a>";

Убрала. Работает.
Но наблюдается некоторый БАГ в работе скрипта, иногда при обновлении страницы, он не печатает никакой ссылки! Просто пустота и все.
Почему так? Как исправить?

Автор: Illuminaty 8.5.2005, 10:02
Код

$soun =array("контроль","алисы","весна","редактировать");
$numbers =array("control","alis","vesna","edit");
$i=mt_rand(0,count($numbers) - 1);
$i=mt_rand(0,count($soun) - 1);
echo "<a href=$numbers[$i].php>$soun[$i]</a>";

Вставлены кавычки и диапазон генерирования случайного числа снижен на 1

Автор: PARROT 8.5.2005, 10:06
Здорово! Спасибо! smile

Автор: Mal Hack 8.5.2005, 10:13
Цитата(PARROT @ 8.5.2005, 10:48)
$i=mt_rand(0,count($numbers));

Лишнее smile

Автор: PARROT 8.5.2005, 10:35
Код

$soun =array("контроль","алисы","весна","редактировать");//массив слов, для обозначения ссылок
$numbers =array("control","alis","vesna","edit");//массив ссылок, при генерации добавляем расширение файла
$i=mt_rand(0,count($numbers) - 1);
$i=mt_rand(0,count($soun) - 1);
echo "<a href=$numbers[$i].php>$soun[$i]</a>";//вид ссылки: <a href=control.php>контроль</a>



Mal Hack, почему эта строчка $i=mt_rand(0,count($numbers)); лишняя? smile
Эта строчка отвечает за генерацию ссылки. smile

Автор: Irokez 8.5.2005, 10:37
Цитата(PARROT @ 8.5.2005, 10:35)
почему эта строчка $i=mt_rand(0,count($numbers)); лишняя?

зачем генерировать два раза случайное число если использоваться будет только одно?

Автор: PARROT 8.5.2005, 10:40
Да, но нужно что бы <a href>слова</a>, совпадали с ссылками. Без этой строки$i=mt_rand(0,count($numbers)); , будут совпадать?

Сейчас они совпадают! А вот...

Да, действительно, эта строка... без нее все работает.
Можно объяснить почему?

Автор: Irokez 8.5.2005, 10:45
потому что надо выбрать из массивов значения с одинаковыми ключами, чтобы ссылка и название ссылки совпадали

Автор: PARROT 8.5.2005, 10:51
Спасибо! Разобралась. Поняла. Почему. smile

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