Как отсортировать один массив по ключам другого?
Итак, у нас есть:
$sortedKeys = ['a', 'b', 'c', 'd'];
$arr = [
'd' => 56,
'a' => 21,
'b' => 0,
'c' => 17
];
Главный факт в том, что ничего сортировать не нужно. Мы просто берем первый массив в качестве основы и заполняем его значениями из другого. Ну а как это сделать - тут уже на наше усмотрение, в качестве примера я нашел 3 способа, два взял первые пришедшие в голову, третий - нашел на форуме.
// Example #1 - Для обывателей
$result1 = [];
foreach($sortedKeys as $key) {
$result1[$key] = $arr[$key];
}
// Example #2 - Если ну прям надо в функциональщину
$result2 = array_reduce($sortedKeys, function($res, $item) use ($arr) {
return array_merge($res, [$item => $arr[$item]]);
}, []);
// Example #3 - Ход конем
$result3 = array_merge(array_flip($sortedKeys), $arr);
Во всех трех случаях получаем одно и то же:
Array
(
[a] => 21
[b] => 0
[c] => 17
[d] => 56
)