Всем привет.
В общем дело обстоит так, есть 2 массива например.
array:5 [▼
0 => array:2 [▼
"hour" => 0,
"ratio_today" => "29.2566"
]
1 => array:2 [▼
"hour" => 1
"ratio_today" => "32.3725"
]
2 => array:2 [▼
"hour" => 2
"ratio_today" => "31.1512"
]
3 => array:2 [▼
"hour" => 3
"ratio_today" => "31.0777"
]
4 => array:2 [▼
"hour" => 4
"ratio_today" => "31.2634"
]
5 => array:2 [▼
"hour" => 5
"ratio_today" => "29.2683"
]
И второй массив
array:5 [▼
0 => array:2 [▼
"hour" => 0,
"ratio_yesterday" => "29.2566"
]
1 => array:2 [▼
"hour" => 1
"ratio_yesterday" => "32.3725"
]
2 => array:2 [▼
"hour" => 2
"ratio_yesterday" => "31.1512"
]
3 => array:2 [▼
"hour" => 3
"ratio_yesterday" => "31.0777"
]
4 => array:2 [▼
"hour" => 4
"ratio_yesterday" => "31.2634"
]
5 => array:2 [▼
"hour" => 5
"ratio_yesterday" => "29.2683"
]
Ключ массива = hour.
Как мне их лучше всего смержить по ключу.
У array_merge есть специфическая особенность, если ключи - integer, тогда он добавляет в конец другого массива.
На данный момент я делаю это так:
#добавляем префиксы к ключам первого массива
$data = array_combine(array_map(function($a) {
return '_' . $a;
}, array_keys($data)), $data);
#добавляем префиксы к ключам второго массива
$data1 = array_combine(array_map(function($a) {
return '_' . $a;
}, array_keys($data1)), $data1);
#сливаем
$result = array_merge($data, $data1);
#удаляем префиксы
$result = array_combine(array_map(function($a) {
return substr($a, 1);
}, array_keys($result)), $result);
На выходе я благополучно получаю искомый массив.
array:6 [▼
0 => array:3 [▼
"hour" => array:2 []
"ratio_today" => "29.2566"
"ratio_yesterday" => "25.3968"
]
1 => array:3 [▼
"hour" => array:2 []
"ratio_today" => "32.3725"
"ratio_yesterday" => "25.5435"
]
2 => array:3 [▼
"hour" => array:2 []
"ratio_today" => "31.1512"
"ratio_yesterday" => "27.6699"
]
3 => array:3 [▼
"hour" => array:2 []
"ratio_today" => "31.0777"
"ratio_yesterday" => "27.4510"
]
4 => array:3 [▼
"hour" => array:2 []
"ratio_today" => "25.8065"
"ratio_yesterday" => "31.2634"
]
5 => array:3 [▼
"hour" => array:2 []
"ratio_today" => "29.2683"
"ratio_yesterday" => "27.2727"
]
Вопрос в том, можно ли это решить менее гуммозным способом?