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 关注
- 118 浏览
添加回答
举报