加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 每周洗牌的数组

发布时间:2020-12-13 16:13:25 所属栏目:PHP教程 来源:网络整理
导读:我有一组4个 HTML列表项,我想将它们每周出现一次的顺序洗牌.我想知道是否有人对此有一个很好的,优雅的解决方案? 一如既往,我会非常感激您的任何投入! 更新: 不幸的是,即使有必要的.htaccess覆盖,我也无法让任何基于srand()的解决方案在这个特定的服务器上
我有一组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中).尽管如此,既然您已了解日期(‘W’),那么您自己就可以轻松找到替代解决方案.

编辑:如果您不想实现自己的伪随机数生成器但安装了Suhosin,则可以在.htaccess中添加以下行:

php_value suhosin.srand.ignore 0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读