sensus
@sensus

Как разобрать массивы по принципу, кто последний того и тапки?

Приветствую!
Я уже наверное всех достал с этими массивами.
Суть в том, что есть массивы дат с значениями (значения могут быть чем угодно, для примера алфавит)
Надо как то их разобрать, при условии что следующий массив всегда верны и заменяет/делит предыдущий.
Покажу наглядно.

Пример исходных данных
array:3 [
  0 => array:6 [
    "2018-03-05" => "a"
    "2018-03-06" => "b"
    "2018-03-07" => "c"
    "2018-03-08" => "d"
    "2018-03-09" => "e"
    "2018-03-10" => "f"
  ]
  1 => array:4 [
    "2018-03-07" => "g"
    "2018-03-08" => "h"
    "2018-03-09" => "i"
    "2018-03-10" => "k"
  ]
  2 => array:8 [
    "2018-03-01" => "l"
    "2018-03-02" => "m"
    "2018-03-03" => "n"
    "2018-03-04" => "o"
    "2018-03-05" => "p"
    "2018-03-06" => "q"
    "2018-03-07" => "r"
    "2018-03-08" => "s"
  ]
  3 => array:3 [
    "2018-03-04" => "t"
    "2018-03-05" => "v"
  ]
]


Как добиться подобного результата? (порядок массивов не важен)
Рекурсиями гонять?

array:3 [
  0 => array:3 [
    "2018-03-01" => "l"
    "2018-03-02" => "m"
    "2018-03-03" => "n"
  ]
 1 => array:2 [
    "2018-03-04" => "t"
    "2018-03-05" => "v"
  ]
 2 => array:3 [
    "2018-03-06" => "q"
    "2018-03-07" => "r"
    "2018-03-08" => "s"
  ]
 3 => array:2 [
    "2018-03-09" => "i"
    "2018-03-10" => "k"
  ]
]


Я уже всю голову себе сломал...
Как я понимаю: берем последний массив, пробегаем даты по всем другим массивам.
Если находим пересечение, то дробим...
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 2
@grinat
Делай рекурсии, в php 7 может даже есть поддержка хвостовых рекурсий.
Ответ написан
sgjurano
@sgjurano
Разработчик
Заводите структуру данных "множество".
Проходите по внешнему списку в обратном порядке, для каждого элемента вложенных списков проверяете есть ли такой элемент в множестве, если нет - добавляете в множество и в результирующий список.

Не понятно по какому принципу вы разбиваете элементы по спискам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Duotek Москва
До 120 000 руб.
от 2 000 до 4 000 usd.
Вебформат Екатеринбург
от 40 000 до 80 000 руб.
21 авг. 2018, в 16:11
1500 руб./за проект
21 авг. 2018, в 15:45
4000 руб./за проект
21 авг. 2018, в 15:42
2500 руб./за проект