Сортировка многомерного массива по самым высоким широтам и долготам - PullRequest
0 голосов
/ 01 ноября 2011

Я пытался решить это некоторое время сейчас.У меня есть массив местоположений и вложенные массивы значений, относящихся к этому местоположению, взятые из XML-файла.Например:

Array
(
    [ab15] => Array
        (
            [stid] => ab15
            [name] => Alan Briggs
            [stnm] => 2072
            [lat] => 46.9814
            [lon] => -67.4305
            [elev] => 0
            [net] => NBP
            [ecrg] => nil
        )

    [alw] => Array
        (
            [stid] => alw
            [name] => Alward
            [stnm] => 2000
            [lat] => 46.2
            [lon] => -65.445
            [elev] => 123
            [net] => FORET
            [ecrg] => NAN
        )

    [cwzs] => Array
        (
            [stid] => cwzs
            [name] => Amqui
            [stnm] => 489
            [lat] => 48.4722
            [lon] => -67.4342
            [elev] => 165
            [net] => DEA
            [ecrg] => NAN
        )
...

Мне нужно отсортировать их по порядку так, чтобы первым был самый высокий ['lat'] и самый низкий ['lon'] и так далее.Например:

Array
(

    [cwzs] => Array
        (
            [stid] => cwzs
            [name] => Amqui
            [stnm] => 489
            **[lat] => 48.4722
            [lon] => -67.4342**
            [elev] => 165
            [net] => DEA
            [ecrg] => NAN
        )

    [ab15] => Array
        (
            [stid] => ab15
            [name] => Alan Briggs
            [stnm] => 2072
            [lat] => 46.9814
            [lon] => -67.4305
            [elev] => 0
            [net] => NBP
            [ecrg] => nil
        )

    [alw] => Array
        (
            [stid] => alw
            [name] => Alward
            [stnm] => 2000
            [lat] => 46.2
            [lon] => -65.445
            [elev] => 123
            [net] => FORET
            [ecrg] => NAN
        )

...

Я понятия не имею, как это сделать, я рассмотрел ряд функций сортировки массивов, я просто не могу обернуться вокруг этого вопроса.

1 Ответ

2 голосов
/ 01 ноября 2011
uasort($arr, function($item1, $item2)
{
    if($item1['lat'] == $item2['lat'])
    {
       if($item1['lon'] == $item2['lon'])
       {
           return 0;
       }
       return $item1['lon'] > $item2['lon'] ? 1 : -1;
    }
    return $item1['lat'] > $item2['lat'] ? -1 : 1;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...