Max_kmv
Новичок
Сортировка одного массива по значениям другого
Здравствуйте!
есть вот такая ситуация - массив $data с данными и массив $a2sort содержащий ключи некоторых объектов из $data. Так вот, надо отсортировать $a2sort в соответствии со значениями ключей priority соответствующего элемента в $data.
Вот код
На выходе необходимо получить $a2sort = array(3,0)
Как вариант было сделать так
Вопрос в том можно ли сделать более оптимально, избежав прохода по $a2sort и соответственно создания $tmparray ?
Здравствуйте!
есть вот такая ситуация - массив $data с данными и массив $a2sort содержащий ключи некоторых объектов из $data. Так вот, надо отсортировать $a2sort в соответствии со значениями ключей priority соответствующего элемента в $data.
Вот код
PHP:
<?php
$data = array(
0 => array("id" => 0,
"priority" => 20),
1 => array("id" => 1,
"priority" => 10),
3 => array("id" => 3,
"priority" => 5),
);
$a2sort = array(0, 3);
function sort_by_priority_arr($a, $b){
IF ($a["priority"] == $b["priority"])
return 0;
ELSE
return ($a["priority"] > $b["priority"]) ? +1 : -1;
}
uasort($a2sort, "sort_by_priority_arr");
?>
Как вариант было сделать так
PHP:
FOREACH($a2sort as $val){
$tmparray[$val] = &$data[$val];
}
uasort($tmparray, "sort_by_priority_arr");