Нюансы при слиянии массивов

118
27 декабря 2020, 20:10

Подскажите что я не правильно делаю при слиянии массивов ?

пытаюсь соединить массивы array_merge($array1, $array2); но при слиянии уничтожаются ключи date и id_city

array(3) {
  ["2019-05-18"]=>
  array(3) {
    ["date"]=>
    string(10) "2019-05-18"
    ["count"]=>
    int(0)
    ["id_city"]=>
    int(10)
  }
  ["2019-05-19"]=>
  array(3) {
    ["date"]=>
    string(10) "2019-05-19"
    ["count"]=>
    int(0)
    ["id_city"]=>
    int(10)
  }
  ["2019-05-20"]=>
  array(3) {
    ["date"]=>
    string(10) "2019-05-20"
    ["count"]=>
    int(0)
    ["id_city"]=>
    int(10)
  }
}
array(3) {
  ["2019-05-18"]=>
  array(1) {
    ["count"]=>
    int(12)
  }
  ["2019-05-19"]=>
  array(1) {
    ["count"]=>
    int(9)
  }
  ["2019-05-20"]=>
  array(1) {
    ["count"]=>
    int(8)
  }
}
Answer 1

Подскажите что я не правильно делаю при слиянии массивов ?

не читаете документацию.

Данная функция слияния вообще никак не обрабатывает вложенные массивы. Чтобы совместить вложенные вам потребуется array_merge_recursive()

$a = ['x' => ['a' => 1, 'b' => 2, 'v' => 10]];
$b = ['x' => ['c' => 3, 'v' => 20]];
$result = array_merge_recursive($a, $b);
print_r($result);

получим

Array (
    [x] => Array (
            [a] => 1
            [b] => 2
            [v] => Array (
                [0] => 10
                [1] => 20
            )
            [c] => 3
        )    
)

Согласно документации значения одинаковых ключей помещаются в массив. Если же вам их надо как-то преобразовать (сложить, например), то это необходимо сделать вручную. Обычно для подобных преобазований используют array_map, но можете воспользоваться и array_walk или простым циклом.

 array_walk($result, function(&$v){   $v['v'] = array_sum($v['v']); });
READ ALSO
Joomla - как вывести компонент внутри модуля?

Joomla - как вывести компонент внутри модуля?

Я хочу открыть компонент в модуле, для размещения его под контентной частью на нескольких страницах сайтаМожно ли как-то организовать код...

121
Как убрать символ \u200b из строки php

Как убрать символ \u200b из строки php

При импорте данных(штрих-коды товаров) в таблицу MySQL в конце одной строки появляется символ \u200b Как его убрать? Сначала получаю данные из массива,...

103
SSL routines:tls_process_server_certificate:certificate verify failed

SSL routines:tls_process_server_certificate:certificate verify failed

При установке с помощью композера любых пакетов, выпадает ошибка

107
Curl не отправляет POST-запрос с JSON

Curl не отправляет POST-запрос с JSON

При отправке запроса с помощью Curl, используя данный код, при выводе $_POST получаю пустой массив , если убрать curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));,...

100