我有一组4个HTML列表项,我想将它们的出现顺序每周一次。我想知道是否有人有一个很好的,优雅的解决方案?
一如既往,我将非常感谢您的任何意见!
更新:
不幸的是,即使使用了必需的.htaccess重写,我也无法获得任何基于srand()的解决方案来在这个特定的服务器上工作,但有以下可以替代的方法-目前,它只返回一个列表项-我如何修改它以显示所需的四个列表项?再次感谢您的意见:)

function RandomList($TimeBase, $QuotesArray){

    $TimeBase = intval($TimeBase);

    $ItemCount = count($QuotesArray);

    $RandomIndexPos = ($TimeBase % $ItemCount);

    return $QuotesArray[$RandomIndexPos];

}

$WeekOfTheYear = date('W');

$RandomItems = array(
    "<li><a href=\"#northern-germany\" title=\"Northern Germany\">North</a></li>","<li><a href=\"#southern-germany\" title=\"Southern Germany\">South</a></li>","<li><a href=\"#western-germany\" title=\"Western Germany\">West</a></li>","<li><a href=\"#eastern-germany\" title=\"Eastern Germany\">East</a></li>");

print RandomList($WeekOfTheYear, $RandomItems);

最佳答案

这是一个简单而-我猜-相当优雅的解决方案,它不涉及在数据库中存储值、设置cronjobs和其他无聊的事情。
假设您的列表元素位于$array中:

srand(date('W'));
shuffle($array);
srand();

现在你的数组被洗牌了,并且将以同样的方式洗牌到下周一。
不过,这有一个问题:它不适用于suhosin补丁(默认安装在debian中)。不过,既然你已经知道了date('W')这一点,你自己就很容易想出一个替代的解决方案。
编辑:如果您不想实现自己的伪随机数生成器,但您已经安装了suhosin,则可以在.htaccess中放入以下行:
php_value suhosin.srand.ignore 0

09-25 19:08