Сортировка ассоциативного массива в произвольном порядке
В этой статье мы рассмотрим, как отсортировать ассоциативный массив, используя другой массив как карту порядка.
Пример задачи
Допустим, у нас есть массив с переводами, и мы хотим отсортировать его в желаемом порядке:
$languages = [
'fr' => 'Французский',
'ru' => 'Русский',
'en' => 'Английский'
];
$order = ['ru', 'en', 'fr', 'es']; // желаемый порядок
Мы хотим отсортировать элементы массива $languages
по порядку, заданному в массиве $order
. Это можно сделать с помощью функций array_merge()
или array_replace()
.
Шаги по сортировке
- Создайте перевернутый массив из массива
$order
, чтобы использовать его как ключи. Это поможет нам сохранить порядок:
$order = array_flip($order);
- Удалите из массива
$order
элементы, которых нет в массиве$languages
. Это нужно, чтобы избежать лишних значений:
$order = array_intersect_key($order, $languages); // убираем из $order то, чего нет в $languages
- Сортируйте массив. Здесь вы можете использовать одну из следующих функций:
- С помощью
array_merge()
:
$languages = array_merge($order, $languages);
- Либо с помощью
array_replace()
:
$languages = array_replace($order, $languages);
Результат
После выполнения вышеперечисленных шагов ваш массив $languages
будет отсортирован. Вы можете вывести его с помощью print_r
, чтобы увидеть итог:
print_r($languages);
/*
Array
(
[ru] => Русский
[en] => Английский
[fr] => Французский
)
*/
Теперь вы знаете, как сортировать ассоциативные массивы в произвольном порядке с помощью другого массива. Попробуйте использовать этот метод в своих проектах на WordPress!