[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка массива
cremnet
Есть функция sort_in_custom_order($array,$order) в которую передается массив (в котором ключи некий буквенночисловой код) - $array и массив состоящий из цыфр от 1 до N где N-количество элементов в первом массиве $order, причем порядок произвольный. Как отсортировать массив $array в порядке указанном в массиве $order;
В голову ничего хорошего кроме бреда не идет
....
 
//функция сортировки
function sort_in_custom_order($array,$order){
...
}
// порядок согласно которому будет происходить сортировка
$order = array(
2,5,4,3,1
);
// массив который нужно отсортировать
$array = array(
'test'=>'проверка',
'hello'=>'Vasia',
'world'=>'Pupkin',
'a'=>1,
'b'=>2
);

$result = sort_in_custom_order($array,$order);

// желаемый результат
array(
'hello'=>'Vasia',
'b'=>2,
'a'=>1,
'world'=>'Pupkin',
'test'=>'проверка'
);




Спустя 2 минуты, 4 секунды (26.03.2011 - 22:43) alex12060 написал(а):
В заданном? Тогда передавай как массив параметры сортировки, и уже внутри парсируй.

Спустя 5 минут, 6 секунд (26.03.2011 - 22:48) cremnet написал(а):
Цитата (alex12060 @ 26.03.2011 - 19:43)
В заданном? Тогда передавай как массив параметры сортировки, и уже внутри парсируй.

живой пример пожалуйста
....
наверное я не в том разделе тему открыл

Спустя 2 часа, 1 минута, 7 секунд (27.03.2011 - 00:49) Trianon написал(а):
нет никакой корреляции между указанными массивами.

То есть, она, конечно, есть.
Но человек, знающий, как нумеруются элементы в массивах, имеет полное право считать, что её нет.

Спустя 14 часов, 8 минут, 6 секунд (27.03.2011 - 13:57) cremnet написал(а):
Цитата (Trianon @ 26.03.2011 - 21:49)
нет никакой корреляции между указанными массивами.

То есть, она, конечно, есть.
Но человек, знающий, как нумеруются элементы в массивах, имеет полное право считать, что её нет.

бр... ничего не понял... но спасибо, проблему решил))) пиво помогло... правда результат меня не радует но если кому интересно

function sort_custom_order($array,$order){
$new = array();
foreach($array as $k=>$v){
list($i,$n) = each($order);
$new[$n][$k]=$v;
}
ksort($new);
$array = array();
foreach($new as $a){
list($k,$v) =each($a);
$array[$k]=$v;
}
return $array;
}

мож у кого идеи есть как сделать это красивее?

Спустя 15 минут, 6 секунд (27.03.2011 - 14:12) Trianon написал(а):
function sort_in_custom_order($array,$order) {
$keys = array_keys($array); $values = array_values($array);
$array = array();
foreach($order as $j) $array[$keys[$j-1]] = $values[$j-1];
return $array;
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.