Существует массив со следующей структурой полей: $test = array //Структура для для подгрузки множества условий! ( array('SQL'=> 'second', 'priority' => 2) array('SQL'=> 'first', 'priority' => 1), array('SQL'=> 'third', 'priority' => 3), ) Хочу его отсортировать в соответствии со значением поля содержащего приоритет (только цифры). В итоге хочу получить: $test = array //Структура для для подгрузки множества условий! ( array('SQL'=> 'third', 'priority' => 3), array('SQL'=> 'second', 'priority' => 2) array('SQL'=> 'first', 'priority' => 1), ) Нашел множество функций для сортировки (array_multisort, asort, ksort), но вот применить их правильно не смог. Может подсобите
1. Я не хочу тебя расстраивать, но... слушай, если ты не умеешь сортировать массивы, почему тема не в "новичках"? 2. вот на этой странице смотри User Contributed Notes ака комментарии. Четвертый снизу - Exemple of sorting multi-dimensional arrays by one of it's fields. Впрочем, почитай и остальныые, очень полезное чтение.
PHP: <pre> <? $test = array( array('SQL'=> 'second', 'priority' => 2), array('SQL'=> 'first', 'priority' => 1), array('SQL'=> 'third', 'priority' => 3) ); function CustomSort( &$test) { foreach($test as $data) { $test2[$data['priority']] = $data['SQL']; } krsort( $test2); foreach ($test2 as $key => $value) $test3[] = array('SQL' => $value, 'priority' => $key); $test = $test3; return $test; } CustomSort($test); print_r( $test); ?> </pre> Array ( [0] => Array ( [SQL] => third [priority] => 3 ) [1] => Array ( [SQL] => second [priority] => 2 ) [2] => Array ( [SQL] => first [priority] => 1 ) ) Может быть, это можно зделать и проще...
На счет новичков извиняюсь, поверьте когда ты последний трудно оценить степень сложности вопроса Из указанных вами источников получилось собрать следующую функцию: PHP: function array_sort_by_field(&$arr, $fieldname, $sort_order = SORT_ASC, $sort_type = SORT_REGULAR) { foreach($arr as $val) $sortAux[] = $val[$fieldname]; array_multisort($sortAux, $sort_order, $sort_type, $arr); return $arr; } И мое решение получается такое: $test = array_sort_by_field($test, 'priority', SORT_DESC); Вариант предложенный neverlose работоспособен, но в случае одинакового 'priority' получим казус.