Сортировка ассоциативного массива по произвольному порядку

Ниже показано, как можно сортировать ассоциативный массив по ключам, используя другой массив.

Для примера возьмем такую задачку: есть массив с языками перевода и нам нужно отсортировать их в нужном порядке:

$languages = [ 'fr'=>'Французский', 'ru'=>'Русский', 'en'=>'Английский' ];
$order     = [ 'ru', 'en', 'fr', 'es' ]; // нужный порядок

Т.е. нам нужно чтобы элементы массива $languages были в том же порядке что и в массиве $order. Сделать это можно используя PHP функции array_merge() или array_replace()

$order = array_flip( $order );
$order = array_intersect_key( $order, $languages ); // удалим из $order чего нет в $languages

$languages = array_merge( $order, $languages );
// или
$languages = array_replace( $order, $languages );

Получим:

print_r( $languages );
/*
Array
(
	[ru] => Русский
	[en] => Английский
	[fr] => Французский
)
*/