2015-11-28 2 views
1

У меня есть массив, который содержит другой массив с расстоянием и идентификатором в нем. Мне нужно отсортировать дистанционную часть массива, поэтому идентификатор остается связанным с соответствующим расстоянием.PHP сортировка набора многомерных массивов

Например.

array 
(
    [0] => array(
        [0] => 170 
        [1] => 123abc 
    ) 
    [1] => array(
        [0] => 150 
        [1] => 456def 
    ) 
) 

Теперь я хочу, чтобы отсортировать расстояния восходящие так что мой отсортированный результат будет выглядеть следующим образом:

array 
(
    [0] => array(
        [0] => 150 
        [1] => 456def 
    ) 
    [1] => array(
        [0] => 170 
        [1] => 123abc 
    ) 
) 

В 150 меньше, чем 170, он «переехал» вверх.

Я рассмотрел функции PHP для этого; array_multisort() и т. д., однако они кажутся только сортировкой значений внутри массивов, а не набора массивов.

Любая помощь приветствуется.


EDIT: Существует не фиксированное количество элементов в первом массиве - она ​​колеблется от 1 до бесконечности.

+0

вы можете попробовать 'array_map()', который будет сортировать каждый массив внутри родительского массива. –

+0

Зачем использовать 'array_map', если вы можете просто использовать' usort' или 'uasort' –

+0

К сожалению, я должен был сказать, что может быть больше двух« наборов »значений расстояния и идентификатора. Я не думаю, что использование «usort» в этом случае было бы осуществимым. – CrabLab

ответ

2

использование usort

usort($yourArray, function($a, $b) { 
    return $a[0] - $b[0]; // index 0 is your 150 or 170 
}); 
Смежные вопросы