Как объединить два массива разной длиной по дате PHP
нужна помощь, есть 2 массива.
Первый массив
Array (
[0] => Array
(
[countid] => 4
[datecount] => 2020-09-26
)
[1] => Array
(
[countid] => 3
[datecount] => 2020-09-27
)
[2] => Array
(
[countid] => 4
[datecount] => 2020-09-28
)
[3] => Array
(
[countid] => 2
[datecount] => 2020-09-29
)
[4] => Array
(
[countid] => 14
[datecount] => 2020-09-30
)
)
Второй массив
Array(
[0] => Array
(
[countid2] => 1
[datecount] => 2020-09-28
)
[1] => Array
(
[countid2] => 13
[datecount] => 2020-09-30
)
)
Задача
Объединить два массива в один, путем создания нового массива, чтобы на выходе получилось так
Array(
[notvisit] => Array
(
[0] => 0
[1] => 0
[2] => 1
[3] => 0
[4] => 13
)
[visits] => Array
(
[0] => 4
[1] => 3
[2] => 4
[3] => 2
[4] => 14
)
[date] => Array
(
[0] => 26.09
[1] => 27.09
[2] => 28.09
[3] => 29.09
[4] => 30.09
)
)
Делал так, но на выходе дублируются даты и данные:
$tmpdata = [];
foreach($tmpdatas1 as $item) {
foreach($tmpdatas2 as $item2) {
if($item['datecount'] == $item2['datecount']){
$tmpdata['notvisit'][] = $item2['countid2'];
$tmpdata['visits'][] = $item['countid'];
$tmpdata['date'][] = date("d.m",strtotime($item['datecount']));
}else{
$tmpdata['notvisit'][] = '0';
$tmpdata['visits'][] = $item['countid'];
$tmpdata['date'][] = date("d.m",strtotime($item['datecount']));
}
}
}
выводит такой массив, а нужно чтобы не дублировались
Array(
[notvisit] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 1
[5] => 0
[6] => 0
[7] => 0
[8] => 0
[9] => 13
)
[visits] => Array
(
[0] => 4
[1] => 4
[2] => 3
[3] => 3
[4] => 4
[5] => 4
[6] => 2
[7] => 2
[8] => 14
[9] => 14
)
[date] => Array
(
[0] => 26.09
[1] => 26.09
[2] => 27.09
[3] => 27.09
[4] => 28.09
[5] => 28.09
[6] => 29.09
[7] => 29.09
[8] => 30.09
[9] => 30.09
)
)
Ответы (1 шт):
Автор решения: Denis640Kb
→ Ссылка
$tmpdatas1 = [['countid' => '4', 'datecount' => '2020-09-26'],
['countid' => '3', 'datecount' => '2020-09-27'],
['countid' => '4', 'datecount' => '2020-09-28'],
['countid' => '2', 'datecount' => '2020-09-29'],
['countid' => '14', 'datecount' => '2020-09-30']];
$tmpdatas2 = [['countid2' => '1', 'datecount' => '2020-09-28'],
['countid2' => '13', 'datecount' => '2020-09-30']];
$tmpdata = [];
foreach($tmpdatas1 as $item) {
$val = 0; // заводим переменную для каждого элемента первого массива
foreach($tmpdatas2 as $item2) {
if($item['datecount'] == $item2['datecount']){
$val += $item2['countid2']; // Если найдено, то складываем значение
}
}
$tmpdata['notvisit'][] = $val; // Выводим данные
$tmpdata['visits'][] = $item['countid'];
$tmpdata['date'][] = date("d.m",strtotime($item['datecount']));
}
print_r($tmpdata);