Сортировка ассоциативного массива в произвольном порядке
В этой статье мы рассмотрим, как отсортировать ассоциативный массив, используя другой массив как карту порядка.
Пример задачи
Допустим, у нас есть массив с переводами, и мы хотим отсортировать его в желаемом порядке:
$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!