Задать вопрос
@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. Обходим второй массив, собираем такой же ключ и если он есть в первом, то берем по нему значение и склеиваем по вашим требованиям.

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

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

Похожие вопросы
FoodSoul Калининград
от 160 000 до 250 000 ₽
BGStaff Москва
До 300 000 ₽
Greenway Global Новосибирск
от 150 000 до 250 000 ₽