2010-12-07 3 views
3

У меня есть массив, который выглядит следующим образом:Сортировка 2D массив в PHP

Array 
(

[90] => Array 
    (
     [1056] => 44.91 
     [1055] => 53.56 
     [1054] => 108.88 
     [1053] => 23.28 

    ), 
[63] => Array 
    (
     [1056] => 44.44 
     [1055] => 53.16 
     [1054] => 108.05 

    ), 
[21] => Array 
    (
     [1056] => 42.83 
     [1055] => 51.36 
     [1054] => 108.53 
    ) 
); 

Обе клавиши ([х] и [у]) относятся к идентификаторам в моей базе данных, так что те должны остаться нетронутыми. Порядок [x] не имеет значения, но мне нужно отсортировать каждый массив по значению [y].

Edit: Я пробовал этот цикл, но это не похоже на работу:

foreach($distance as $key=>$value) { 
    asort($value,SORT_NUMERIC); 
} 
+0

Вы могли бы просто цикл через внешний массив с Еогеасп и сортировать каждый внутренний массив с ksort. – vichle 2010-12-07 19:46:20

ответ

3

Использование ksort (или uksort) для сортировки массивов с помощью их ключей.

ОБНОВЛЕНИЕ: Используйте asort (или uasort), чтобы отсортировать по значению, сохраняя ключи.

UPDATE 2: Попробуйте

foreach($distance as &$value) { 
    asort($value,SORT_NUMERIC); 
} 
+0

Я хочу сортировать значения (44.91, 53.96 и т. Д.), А не ключи ([1055], [1056] и т. Д.). – Jarred 2010-12-07 19:44:44

+0

См. Обновленный ответ. – 2010-12-07 19:47:07

+0

См. Изменение в моем исходном сообщении. – Jarred 2010-12-07 19:59:37

2

asort() Используйте для сортировки по значениям. Он поддерживает ассоциации индексов.

Для контура необходимо передать $value по ссылке, поэтому вам необходимо использовать &$value.

0
array_multisort($arrindex1, SORT_DESC, $arrindex2, SORT_DESC, $array); 
Смежные вопросы