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

  • Автор темы Автор темы bav
  • Дата начала Дата начала

bav

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

Добрый день.

У меня есть массив, содержащий коды стран. Вид его такой:
PHP:
$arr1 = array('ru','ua','etc');
$arr2 = array('etc'=>'Другое', 'ru'=>'Россия', 'ua'=>'Украина');

Количество элементов совпадает.
Необходимо осуществить сортировку второго массива на основании первого. Т.е. чтобы ключи второго массива были отсортированы в соответствии с позициями элементов в первом массиве.
Спасибо!

-~{}~ 27.10.10 15:32:

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

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

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

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

А кстати, у меня дальше еще надо поставить последний элемент в начало, т.е. конечный вид кода такой:
PHP:
$countries = array_merge(array_flip($options['countries']),$countries);
       if(isset($countries[''])) array_unshift($countries,array_pop($countries));

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

PHP:
uksort($arr2, function($a, $b) use ($arr1) { return array_search($a, $arr1) - array_search($b, $arr1); });
 
Вурдалак
ты проиграл :) у тебя хоть и говнокод, но раза со второго или третьего можно разобраться.
А у Hrakka красивое шаманство :) труднее понять и короче.
 
Сверху