Как повторить массив определенное количество раз - PullRequest
0 голосов
/ 31 марта 2019

У меня есть количество дней, равное 10, и у меня есть массив дней недели: «Понедельник», «Вторник», «Среда», «Четверг», «Фирдай». Теперь я хочу повторить этот массив 10 раз. Например, если days = 9, массив выведет «понедельник», «вторник», «среда», «четверг», «день недели», «понедельник», «вторник», «среда», «четверг»

Это код, который я уже пробовал

$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

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Вы перебирали массив $days раз.Вам следует перебрать массив $days indexes.

$days = 13;
$arr = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
foreach (range(0, $days - 1) as $i) {
    echo $arr[$i % 5] . ',';
};
0 голосов
/ 31 марта 2019

Вы можете просто использовать цикл 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

Демо на 3v4l.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...