Всем привет!
Есть такой массив:
$arrya = array(
array(),
array(),
array(),
array(),
// ещё сколько-то раз это же
array(),
);
Необходимо сделать так, чтобы
каждый день выводилось по
5 элементов массива по порядку, причем, если элементов в массиве не хватает на весь месяц, то выводить элементы снова по порядку с нуля.
Пример: В массиве 75 элементов, а месяц состоит из 30 дней, то
- в первый день выведутся элементы массива с 0 по 4 ключ
- во второй день выведутся элементы с 5 по 9 ключ
- в третий день с 10 по 14 ключ
Но на 30 дней не хватит 75 элементов, т.к в день необходимо выводить по 5 элементов, а в месяце то у нас 30 дней (см выше условие). Поэтому нужно снова прогонять с начала:
- в 14 день выпадут 70-74 элементы
- в 15 день выпадут 75-79 элементы
Соотвественно, учитывая, что в массиве 75 элементов, то на 15, 16 и остальные дни у нас не хватит элементов. Поэтому они должны снова идти по кругу с нуля. Т.е вот так (весь цикл пошел заново):
- В 15 день: 75,
0, 1, 3, 4
- В 16 день:
5-9
- В 17 день:
10-14
- в 18 день:
15-19
Помогите, пожалуйста, я уже третий день не могу решить эту задачу :(
// Число элементов в массиве
$count_array = count($array);
// Выводить элементов на страницу
$count_str = 5;
if($count_array > 0) {
$html = '';
// Текущий день месяца числом
$j = date('j');
// Конечная позиция
$end_key = $j * $count_str;
// Начальная позиция
$start_key = $end_key - $count_str;
for($i = $start_key; $i < $end_key; $i++) {
if(array_key_exists($i, $array)) {
$value = $array[$i];
$html .= $i.' => TRUE <br/>';
}
else {
$html .= $i.' => FALSE <br/>';
}
}
echo $html;
}