Сортировка ассоциативного массива на основании ключей другого массива

bav

Новичок
Сортировка ассоциативного массива на основании ключей другого массива

Добрый день.

У меня есть массив, содержащий коды стран. Вид его такой:
PHP:
$arr1 = array('ru','ua','etc');
$arr2 = array('etc'=>'Другое', 'ru'=>'Россия', 'ua'=>'Украина');
Количество элементов совпадает.
Необходимо осуществить сортировку второго массива на основании первого. Т.е. чтобы ключи второго массива были отсортированы в соответствии с позициями элементов в первом массиве.
Спасибо!

-~{}~ 27.10.10 15:32:

Есть вариант просто перебрать foreach первый массив, и заполнить новый массив значениями из второго. Есть ли лучше способ?
 

Adelf

Administrator
Команда форума
Есть вариант просто перебрать foreach первый массив, и заполнить новый массив значениями из второго. Есть ли лучше способ?
Не ищи лучшего, когда есть хорошее и устраивающее во всем. Ты бы написал этот код быстрее, чем этот пост.

Вурдалак
Неправильно. Там надо наоборот.
 

bav

Новичок
Думал может есть очень красивое решение.

Но, Adelf, убедил, оставил свое решение.

Всем спасибо!
 

HraKK

Мудак
Команда форума
Внимание, сейчас будет идуский код!
PHP:
var_dump(array_merge(array_flip($arr1),$arr2));
 

bav

Новичок
HraKK
Вот это спасибо, краисво!

А кстати, у меня дальше еще надо поставить последний элемент в начало, т.е. конечный вид кода такой:
PHP:
$countries = array_merge(array_flip($options['countries']),$countries);
       if(isset($countries[''])) array_unshift($countries,array_pop($countries));
Что будет работать быстрее: foreach+введдение временного массива или использование всех этих функций?
 

HraKK

Мудак
Команда форума
Что будет работать быстрее:
А проверить?
Быстрее всего будет for - потом foreach потом только индусский код.
НО. Если это встречается 1 раз, то без разницы.
 

Adelf

Administrator
Команда форума
bav
А теперь представь, что ты через 10 лет будешь смотреть этот код. Который код будет тебе понятнее сразу - такой и выбирай. На быстродействие в 99% случаев плевать.
 

HraKK

Мудак
Команда форума
Но все равно я красавчик)) Не разучился индуский код писать)
 

Вурдалак

Продвинутый новичок
А, это соревнование по говнокоду. OK.

PHP:
uksort($arr2, function($a, $b) use ($arr1) { return array_search($a, $arr1) - array_search($b, $arr1); });
 

Adelf

Administrator
Команда форума
Вурдалак
ты проиграл :) у тебя хоть и говнокод, но раза со второго или третьего можно разобраться.
А у Hrakka красивое шаманство :) труднее понять и короче.
 
Сверху