我有一些等于10的天数,我有一系列工作日“星期一”,“星期二”,“星期三”,“星期四”,“Firday”。现在我想重复这个数组10次。例如,如果days = 9,则数组将打印出“Monday”,“Tuesday”,“Wednesday”,“Thursday”,“Firday”,“Monday”,“Tuesday”,“Wednesday”,“Thursday”
这是我已经尝试过的代码
$days = 9;
$arr = array("Monday", "Tuesday", "Wednesday", "Thursday", "Firday");
foreach (range(1, $days) as $i) {
foreach ($arr as $value) {
echo $value . ', ';
}
}
我得到的结果是
Monday, Tuesday, Wednesday, Thursday, Firday,
Monday, Tuesday, Wednesday, Thursday, Firday,
Monday, Tuesday, Wednesday, Thursday, Firday,
Monday, Tuesday, Wednesday, Thursday, Firday,
Monday, Tuesday, Wednesday, Thursday, Firday,
Monday, Tuesday, Wednesday, Thursday, Firday,
Monday, Tuesday, Wednesday, Thursday, Firday,
Monday, Tuesday, Wednesday, Thursday, Firday,
Monday, Tuesday, Wednesday, Thursday, Firday,
但我期待的结果是
Monday, Tuesday, Wednesday,
Thursday, Firday, Monday, Tuesday, Wednesday, Thursday
你可以使用for
循环和模数运算符%
来确保你的索引不超过数组的范围:
$days = 9;
$arr = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
for ($i = 0; $i < $days; $i++) {
echo $arr[$i % 5] . ',';
}
输出:
Monday,Tuesday,Wednesday,Thursday,Friday,Monday,Tuesday,Wednesday,Thursday,
如果您不想使用尾随逗号,只需在输出之前为循环结束添加一个测试:
for ($i = 0; $i < $days; $i++) {
echo $arr[$i % 5] . ($i == $days - 1 ? '' : ',');
}
输出:
Monday,Tuesday,Wednesday,Thursday,Friday,Monday,Tuesday,Wednesday,Thursday
你正在迭代一个数组$days
次。你应该遍历数组$days
索引。
$days = 13;
$arr = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
foreach (range(0, $days - 1) as $i) {
echo $arr[$i % 5] . ',';
};