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

Привіт:) У цьому пості покажу як на PHP відсортувати асоціативний масив за заданим порядком (ключами), використовуючи інший масив.

Нехай є масив $languages із мовами, який потрібно відсортувати за ключами із масиву $order.

$languages = [ 'de'=>'Німецька', 'ua'=>'Українська', 'en'=>'Англійська' ];
$order     = [ 'ua', 'en', 'de', 'es', 'it' ];

Нам потрібно, щоб елементи масиву $languages були в тому ж порядку, що й у масиві $order.

/**
 * https://wp-kama.ru/note/sortirovka-assotsiativnogo-massiva
 */

$order = array_flip( $order );

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

$languages = array_merge( $order, $languages );
// або
$languages = array_replace( $order, $languages );

В результаті:

print_r( $languages );

Array
(
    [ua] => Українська
    [en] => Англійська
    [de] => Німецька
)

Михайло Петров
Михайло Петров

Мене звати Михайло. Я — WordPress-розробник. Створюю візитки, корпоративні сайти, блоги на WordPress.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *