1 回答

TA貢獻1785條經驗 獲得超8個贊
以下邏輯可能會幫助您:
為每個頂級數組鍵指定月份名稱 (
rekey()
)合并兩個數組
對結果集進行排序 (
$result
)
<?php
// top-level array from indexed to associative (name of month)
$array1 = rekey($array1);
$array2 = rekey($array2);
function rekey(array $arr = []): array
{
foreach ($arr as $key => $record) {
$arr[$record['month1']] = $arr[$key]; // indexed to name of month
unset($arr[$key]);
}
return $arr;
}
// run the merge
$result = array_merge_recursive($array1, $array2);
// clean up double entries key 'month1'
foreach($result as $key => &$value) {
if(is_array($value['month1'])) $value['month1'] = $value['month1'][0];
}
// prepare result set for sorting
$months = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December'];
foreach($result as $key0 => $value0) {
foreach($months as $key1 => $value1) {
if($key0 === $value1) {
$result[$key1] = $result[$key0]; // set index based on month 0-11
unset($result[$key0]);
}
}
}
ksort($result); // sort
$result = array_values($result); // top-level array back to sequential index
工作演示
- 1 回答
- 0 關注
- 141 瀏覽
添加回答
舉報