У меня есть 5 многомерных массивов, которые я хочу объединить. Все разные массивы имеют разную длину, и каждый из элементов массивов имеет 4 ключа и значения, 3 из которых распределяются между массивами. Эти 3 можно сравнить, и в случае, если эти 3 значения совпадают, тогда массивы можно объединить вместе.
В качестве примера 3 моих массивов выглядят так:
array ( 0 => array("AccountID" => 9407, "year" => 2019,"month" => "November","received" => 36), 1 => array("AccountID" => 1975,"year" => 2019,"month" => "November","received" => 230),)
array ( 0 => array("AccountID" => 9407,"year" => 2019,"month" => "November","analyzed" => 138), 1 => array("AccountID" => 1975,"year" => 2019,"month" => "April","analyzed" => 1),)
array ( 0 => array("AccountID" => 9407,"year" => 2019,"month" => "November","failed" => 1), 1 => array("AccountID" => 1975,"year" => 2020,"month" => "April","failed" => 7),)
То, что я ищу, - это что-то вроде
^ array:11 [▼
0 => array:4 [▼
"AccountID" => 9407
"year" => 2019
"month" => "November"
"received" => 36
"analyzed" => 138
"failed" => 1
]
1 => array:4 [▼
"AccountID" => 1975
"year" => 2020
"month" => "April"
"received" => 230
"analyzed" => 1
"failed" => 7 ]
, до сих пор я пробовал следующий код, который я использую для объединения двух массивов. это я повторяю для других массивов, объединяя 2 сразу. Но это поставляет неправильные ценности. Возможно, потому что он сравнивается только в том случае, если ключ существует, а не в значении.
foreach ($received_list as $key => $received) {
if (array_key_exists($key, $analyzed_list)) {
$merged[$key] = array_merge($received_list[$key], $analyzed_list[$key]);
} else {
$merged[$key] = array_merge($received_list[$key], ['analyzed' => 0]);
}
}
foreach ($analyzed_list as $key => $received) {
if (array_key_exists($key, $received_list)) {
$merged[$key] = array_merge($analyzed_list[$key], $received_list[$key]);
} else {
$merged[$key] = array_merge($analyzed_list[$key], ['received' => 0]);
}
}
Любая помощь очень ценится!