无重复的随机链接 - 用户会话


Random link without repeat - User session

>我有 7 个链接,我需要为每个页面或页面视图显示一个链接,而无需重复以前视图中的链接。

链接

需要以随机方式显示,如果用户访问 7 个页面(每页一个),则必须向用户显示所有 7 个链接,如果用户访问超过 7 个页面,则 cicle 将重新开始。

我希望这个问题是明确的。谢谢,对不起我的英语丹尼尔

您应该将以前访问过的链接存储在会话或数据库中。 您可以简单地打乱链接,然后迭代低谷。然后检查它以前是否被访问过 - 并继续前进,直到找到一个。如果找不到(完成迭代),则可以假设所有 7 个都已访问,并且可以重置会话/数据库。

小代码示例(注意:伪代码)。

$aLinks = array(1, 2, .., ..);
shuffle($aLinks);
$sLinkToShow = null;
foreach($aLinks as $aLink) {
    if (seenBefore()) continue;
    $sLinkToShow = $aLink['link'];
}
if (is_null($sLinktoShow)) { 
    // seen all
}
echo $sLinkToShow;

将打乱的链接存储在会话中并逐个使用:

$links = array('a', 'b', 'c', …);
if (empty($_SESSION['links'])) {
    // first time visit, populate random order in session
    $_SESSION['links'] = array_keys($links);
    shuffle($_SESSION['links']);
}
// pop first link
$link = array_shift($_SESSION['links']);
// cycle array; or don't, to create a different order next time
$_SESSION['links'][] = $link;
// output link
echo $links[$link];