Как отсортировать многомерный массив (PHP)?

Как отсортировать этот массив по атрибуту pos даже если ключи ( name, store_id, product etc. )

 [Attributes] => Array ( [name] => Array ( [pos] => 30 ) [store_id] => Array ( [pos] => 10 ) [product] => Array ( [pos] => 20 ) ) 

Редактировать: производительность важна, конечно.

Solutions Collecting From Web of "Как отсортировать многомерный массив (PHP)?"

Вы можете использовать uasort() который позволяет вам определять вашу логику сортировки, а также поддерживать ваши ассоциативные индексы. Обратите внимание, что он изменяет исходный массив и возвращает только boolean на основе успеха.

 uasort($your_array, function($a, $b) { return $a['pos'] > $b['pos']; }); 

Мой пример работает> = PHP 5.3, но для более старых версий вы также можете использовать обычную функцию сравнения.

Подробнее uasort() Документацию uasort() .

Посмотрите на функцию PHP array_multisort .

http://php.net/manual/en/function.array-multisort.php

В комментариях есть пример-функция, которая должна быть хорошо для вас:

 function array_orderby() { $args = func_get_args(); $data = array_shift($args); foreach ($args as $n => $field) { if (is_string($field)) { $tmp = array(); foreach ($data as $key => $row) $tmp[$key] = $row[$field]; $args[$n] = $tmp; } } $args[] = &$data; call_user_func_array('array_multisort', $args); return array_pop($args); } // $dataArray is the array that contains your data $sorted = array_orderby($dataArray, 'pos', SORT_DESC);