Помогите разобраться с массивом

darksmoke

Новичок
Добрый день.
Сразу скажу что я не силен, только постигаю. И по сему вопрос глупый, но я не могу его решить сам. Подскажите мне логику.
Есть массив с датами, даты постоянно растут с каждым днем.
Array
(
[0] => Array
(
[0] => 2014
[1] => 07
[2] => 13
)

[1] => Array
(
[0] => 2014
[1] => 07
[2] => 13
)

[2] => Array
(
[0] => 2014
[1] => 07
[2] => 13
)
)
Хочу этот массив разложить так что бы получилось:

2014

январь 1 2 3 4 5 6 7 8 9 - 31
фувраль 1 2 3 4 5 - 28

2015

январь 1 2 3 4 5 6 7 8 9 - 31
фувраль 1 2 3 4 5 - 28

и т. д.

Массив беру из бд.
 

AmdY

Пью пиво
Команда форума
а в чём проблема, выводи в цикле
PHP:
$previous = null;
foreach($array as $v) {
    if (!$previous) {
    // это начало календаря, выводим месяц $v[1] b дату $v[2]
    } else {
      if ($previous[0] == $v[0] && $previous[1] == $v[1]) {
          // тот же месяц, выводим ячейку с датой $v[2];
      } else {
         // новый месяц, выводим месяц $v[1] b дату $v[2] 
      }
    }
    $previous = $v;
}
 

darksmoke

Новичок
Эм.
Беда в том что получается, я получаю данные из выборки с одной датой штук 15. И получается вид такой

01 01 01 01...... 01 02 02 02 02 ... 02 и так далее.
 

darksmoke

Новичок
А как сделать что бы дата по порядку шла и не дублировалась?
 

darksmoke

Новичок
все еще не могу догнать :(
Скажите хоть алгоритм, код я смогу написать, наверное.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
darksmoke, ну так если у тебя даты повторяются - проверь, что если такая дата была - не выводи следующую, пока не сменится день/месяц/год
 

darksmoke

Новичок
Да, да. Правильно. Что то не получается совсем. А именно, как сравнивать дату, если каждый раз пробегаю по циклу он меняет дату?

Т.е. дата всегда будет равна дате... 07 == 07 и так каждый проход.
 

AmdY

Пью пиво
Команда форума
Да, да. Правильно. Что то не получается совсем. А именно, как сравнивать дату, если каждый раз пробегаю по циклу он меняет дату?

Т.е. дата всегда будет равна дате... 07 == 07 и так каждый проход.
у тебя же уже есть она в переменной $previous[2], нужно лишь чуть модифицировать алгоритм.

p.s. Вот сколько не бью себя по рукам, чтобы не давать решения, иногда заносит, а выхлоп как всегда.
 

darksmoke

Новичок
у тебя же уже есть она в переменной $previous[2], нужно лишь чуть модифицировать алгоритм.
и что? С чем мне ее сравнивать? с $v[2] которая такая же?

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

P.S. Решение наверняка такое простое.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
darksmoke, если у тебя в previous то же самое, что в текущей переменной, ты не выводишь ненужное. Так понятней?
 

darksmoke

Новичок
ну это понятно, но первый раз то вывести все равно надо, при каком условии его выводить не пойму.
 

darksmoke

Новичок
darksmoke, если у тебя в previous то же самое, что в текущей переменной, ты не выводишь ненужное. Так понятней?
Ну вот какая логика
Код:
if($previous[2] != $v[2])
    echo $previous[2];
Но так же ничего не будет выводить
 

darksmoke

Новичок
Люди, ну помогите тем кто в танке. Ну это ж капец какой-то задача простая, а я туплю и лыжи не едут.
 

DIG

Новичок
Партнер клуба
Если данные из БД то может быть просто distinct ?
 

darksmoke

Новичок
Если данные из БД то может быть просто distinct ?
Не не пойдет, в базе лежит такое:
2014-07-25 Имя значение
2014-07-25 Имя2 значение
2014-07-25 Имя3 значение
2014-07-25 Имя4 значение
2014-07-25 Имя5 значение
2014-07-25 Имя6 значение
2014-07-26 Имя значение
2014-07-26 Имя2 значение
2014-07-26 Имя3 значение
2014-07-26 Имя4 значение
2014-07-26 Имя5 значение
2014-07-26 Имя6 значение
 
Сверху