Подскажите что я не правильно делаю при слиянии массивов ?
пытаюсь соединить массивы 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)
}
}
Подскажите что я не правильно делаю при слиянии массивов ?
не читаете документацию.
Данная функция слияния вообще никак не обрабатывает вложенные массивы. Чтобы совместить вложенные вам потребуется 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']); });
Продвижение своими сайтами как стратегия роста и независимости