>我有 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];