如何重复一次数组

问题描述 投票:0回答:2

我有一些等于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
php loops foreach
2个回答
0
投票

你可以使用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

Demo on 3v4l.org


1
投票

你正在迭代一个数组$days次。你应该遍历数组$days索引。

$days = 13;
$arr = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
foreach (range(0, $days - 1) as $i) {
    echo $arr[$i % 5] . ',';
};
© www.soinside.com 2019 - 2024. All rights reserved.