Я хочу перенаправить на случайный URL из списка.
Пример : У меня есть 3 URL-адреса: Google.com, Facebook.com, yahoo.com.
<a href = "<?php $sites[array_rand($sites)] ?>">Visit here</a>
Таким образом, всякий раз, когда пользователи щелкают ссылку, они будут перенаправлены на один из 3 URL-адресов в массиве. Я пробовал этот код, но не работал должным образом:
$sites = array(
'http://www.google.com/',
'http://www.facebook.com/',
'http://www.yahoo.com/'
);
die();
Также неясно, является ли этот href законным или нет. Вы не определили, куда вас приведет текущее перенаправление



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Мой код заработал.
<?php
$addresses = [
'http://www.google.com',
'http://www.facebook.com',
'http://www.youtube.com'
];
$size = count($addresses);
$randomIndex = rand(0, $size - 1);
$randomUrl = $addresses[$randomIndex];
?>
<a href = "<?php echo $randomUrl; ?>">random url</a>
Если у вас есть лучший код, сделайте предложение.
Спасибо
Я бы порекомендовал ответ Пати, поскольку он не требует обновления страницы, чтобы URL-адрес отличался при каждом щелчке. Поскольку PHP обрабатывается на стороне сервера, URL-адрес не является динамическим, он отправляется клиенту. JS-ответ Пати динамически изменяет URL-адрес на клиенте.
Та же функциональность с использованием javascript:
<a href='javascript:openUrl()'>Visit here</a>
<script>
var sites=['http://www.google.com/',
'http://www.msn.com/',
'http://www.yahoo.com/'
];
function openUrl(){
var i = Math.round(Math.random()*(sites.length-1));
window.location.href=sites[i];
return false;
}
</script>
Первая запись массива никогда не выбирается таким образом. Вместо этого используйте: window.location.href = sites [Math.floor (Math.random () * sites.length)]; (нет необходимости vor var i)
вам не хватает точки с запятой после
$sites = array(...);