首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在每个星期一旋转PHP数组

如何在每个星期一旋转PHP数组
EN

Stack Overflow用户
提问于 2017-05-03 09:04:36
回答 4查看 319关注 0票数 1

我对PHP很陌生,我有一个数组,我希望它每周一旋转一次,我想要做的是显示这个数组中的前5个条目,然后每个星期一将它向前推一。

到目前为止,这就是我想出来的

代码语言:javascript
复制
$monday = array("James", "George", "Rob", "Martin", "Arthur", "Bob", "Tom", 
"Julie");
array_push($monday, array_shift($monday));

echo $monday[1], $monday[2], $monday[3], $monday[4], $monday[5];

因此,这周它将显示,例如

  • 詹姆斯
  • 乔治
  • 抢夺
  • 马丁
  • 亚瑟

然后第二周它会显示

  • 乔治
  • 抢夺
  • 马丁
  • 亚瑟
  • 鲍勃

这样就会一直这样下去!

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-03 09:14:28

如果你想在全球范围内使用,

代码语言:javascript
复制
function array_rotate($array, $shift)
{
    if (!is_array($array) || !is_numeric($shift)) {
        if (!is_array($array)) {
            error_log(__FUNCTION__ . ' expects first argument to be array; ' . gettype($array) . ' received.');
        }
        if (!is_numeric($shift)) {
            error_log(__FUNCTION__ . ' expects second argument to be numeric; ' . gettype($shift) . " `$shift` received.");
        }
        return $array;
    }
    $shift %= count($array); //we won't try to shift more than one array length
    if ($shift < 0) {
        $shift += count($array);
    }
//handle negative shifts as positive
    return array_slice(array_merge(array_slice($array, $shift, null, true), array_slice($array, 0, $shift, true)), 0, 5, true);
}
$monday = array("James", "George", "Rob", "Martin", "Arthur", "Bob", "Tom",
    "Julie");
$monday = array_rotate($monday, 4); // 4 is number to be shifted
print_r($monday);

这是工作的代码

票数 0
EN

Stack Overflow用户

发布于 2017-05-03 09:11:19

如果我不理解这个问题,这可能是你想要的。

代码语言:javascript
复制
$timestamp = time();
if(date('D', $timestamp) === 'Mon') {
    $temp = $monday[0]; 
    for($i=0;$i<=sizeof($monday)-1;$i++) {
        $monday[$i] = $monday[$i+1];
    }
    $monday[sizeof($monday)-1] = $temp;
}
票数 0
EN

Stack Overflow用户

发布于 2017-05-03 09:16:12

代码语言:javascript
复制
//Array Declaration
$array = array("Name1", "Name2", "Name3", "Name4", "Name5", "Name6");

//Shift First element to end and display.

array_push($array, $array[0]);
unset($array[0]);
$array = array_values($a);

echo $array[0].$array[1].$array[2].$array[3].$array[4];

只需将数组的第一个元素添加到末尾,然后取消第一个值并重置索引。

如果你每个星期一都在问如何做这件事,那么你应该看看如何让一个Cron作业每天运行,并使用Lenox描述的方法来检查是否是星期一。这样,每天它都会检查是否是星期一,并按你的意愿旋转数组。或者,您可以每周运行Cron作业。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43755648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档