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

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

и т. д.

Массив беру из бд.
 
а в чём проблема, выводи в цикле
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;
}
 
Эм.
Беда в том что получается, я получаю данные из выборки с одной датой штук 15. И получается вид такой

01 01 01 01...... 01 02 02 02 02 ... 02 и так далее.
 
все еще не могу догнать :(
Скажите хоть алгоритм, код я смогу написать, наверное.
 
darksmoke, ну так если у тебя даты повторяются - проверь, что если такая дата была - не выводи следующую, пока не сменится день/месяц/год
 
Да, да. Правильно. Что то не получается совсем. А именно, как сравнивать дату, если каждый раз пробегаю по циклу он меняет дату?

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

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

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

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

P.S. Решение наверняка такое простое.
 
darksmoke, если у тебя в previous то же самое, что в текущей переменной, ты не выводишь ненужное. Так понятней?
 
ну это понятно, но первый раз то вывести все равно надо, при каком условии его выводить не пойму.
 
darksmoke, если у тебя в previous то же самое, что в текущей переменной, ты не выводишь ненужное. Так понятней?
Ну вот какая логика
Код:
if($previous[2] != $v[2])
    echo $previous[2];
Но так же ничего не будет выводить
 
Люди, ну помогите тем кто в танке. Ну это ж капец какой-то задача простая, а я туплю и лыжи не едут.
 
Если данные из БД то может быть просто distinct ?
 
Если данные из БД то может быть просто 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 значение
 
Сверху