Сортировка ассоциативного массива по произвольному порядку
Ниже показано, как можно сортировать ассоциативный массив по ключам, используя другой массив.
Для примера возьмем такую задачку: есть массив с языками перевода и нам нужно отсортировать их в нужном порядке:
$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] => Французский ) */