You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP数组循环重置问题:循环输出66次,周五后重置为周一

解决PHP数组循环输出66次并重置的问题

嘿,我来帮你搞定这个数组循环的问题!先看看你原代码里的几个关键问题,再给你两种靠谱的解决方案:

原代码的问题分析

  • 错误修改了数组变量:你一开始写了$days = current($days);,这直接把原本的数组变成了字符串(数组的第一个元素'Monday'),后面的next($days)、end($days)这些操作都是针对字符串的,完全起不到遍历数组的作用。
  • 循环条件逻辑错误:while($days <= 66)是把字符串和数字66比较,逻辑完全不通,我们需要一个计数器来控制总共输出66次。
  • 判断数组末尾的方式不对:if (end ($days))里的end()是把指针移到数组最后并返回元素值(这里是'friday'),非空字符串会被当作true,但这不是判断当前指针是否到末尾的正确方式,而且每次调用end()都会移动指针,打乱遍历顺序。

解决方案1:用数组索引控制(更稳定直观)

这种方式通过索引来遍历数组,逻辑清晰不容易出错:

$days = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'friday');
$totalOutputs = 66;
$currentIndex = 0;
$dayCount = count($days);

for ($i = 1; $i <= $totalOutputs; $i++) {
    // 输出当前元素,可以根据需求调整格式(比如加换行或分隔符)
    echo $days[$currentIndex] . ' ';
    $currentIndex++;
    // 当索引超出数组长度时,重置为0回到开头
    if ($currentIndex >= $dayCount) {
        $currentIndex = 0;
    }
}

解决方案2:用数组指针控制(贴合你的初始思路)

如果你想用数组指针来实现,调整一下判断逻辑就可以:

$days = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'friday');
reset($days); // 先把指针重置到数组第一个元素
$totalOutputs = 66;

for ($i = 1; $i <= $totalOutputs; $i++) {
    echo current($days) . ' ';
    // next()移动指针,当指针到末尾后再调用next()会返回false,此时重置指针
    if (!next($days)) {
        reset($days);
    }
}

两种方案都能实现你要的效果:循环输出数组元素,每到'friday'之后就回到'Monday',直到总共输出66次。

内容的提问来源于stack exchange,提问作者Siyad Nijah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:18:38