Задать вопрос
@frmax
человек

Сложение массивов?

Всем привет помогите придумать оптимальное решение

если 2 многомерных массива
array:4 [
    0 => array:4 [
    "date" => "2018-11-15"
    "type" => "test1"
    "all" => "4"
    "queue" => "1"
  ]
  1 => array:4 [
    "date" => "2018-11-16"
    "type" => "test1"
    "all" => "16"
    "queue" => "1"
  ]
  2 => array:4 [
    "date" => "2018-11-16"
    "type" => "test2"
    "all" => "1"
    "queue" => "1"
  ]
  3 => array:4 [
    "date" => "2018-11-16"
    "type" => "test1_1"
    "all" => "1"
    "queue" => "1"
  ]
]


2

array:7 [
    0 => array:3 [
    "date" => "2018-11-13"
    "new" => "1"
    "type" => "test1_1"
  ]
  1 => array:3 [
    "date" => "2018-11-14"
    "new" => "1"
    "type" => "test1"
  ]
  2 => array:3 [
    "date" => "2018-11-14"
    "new" => "2"
    "type" => "test2"
  ]
  3 => array:3 [
    "date" => "2018-11-14"
    "new" => "1"
    "type" => "test3"
  ]
  4 => array:3 [
    "date" => "2018-11-15"
    "new" => "1"
    "type" => "test2"
  ]
  5 => array:3 [
    "date" => "2018-11-16"
    "new" => "4"
    "type" => "test1"
  ]
  6 => array:3 [
    "date" => "2018-11-16"
    "new" => "1"
    "type" => "test2"
  ]
]


Из них должно получиться 1 массив содержащий 1 и 2 (по типу и дате), если не нашлось пары то подставляются дефолтное значение new=>0
к примеру первые 2
0 => array:4 [
    "date" => "2018-11-15"
    "type" => "test1"
    "all" => "4"
    "new" => "0",
    "queue" => "1"
  ]
  1 => array:4 [
    "date" => "2018-11-16"
    "type" => "test1"
    "all" => "16",
    "new" => "4",
    "queue" => "1"
  ]


У меня все вышло но выходит оч много переборов массивов и это меня расстраивает у кого какие предложения?
  • Вопрос задан
  • 124 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Arik
Если нужно смотреть на date + type, то можно попробовать:

1. Обойти один из массивов и сделать всем записям ключи
"date + type:
$arr = [
'2018-11-16 - test1' => [
    "date" => "2018-11-16"
    "type" => "test1"
    "all" => "16",
    "new" => "4",
    "queue" => "1"
],
];


2. Обходим второй массив, собираем такой же ключ и если он есть в первом, то берем по нему значение и склеиваем по вашим требованиям.

на выходе по одному обходу на массив
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы