uksort по нескольким элементам массива - PullRequest
0 голосов
/ 26 марта 2012

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

Array
(
    [1600] => Array
        (
            [country] => Canada
            [memTypeID] => 10
        )

    [1601] => Array
        (
            [country] => United States
            [memTypeID] => 7
        )

    [1602] => Array
        (
            [country] => Canada
            [memTypeID] => 9
        )
)

Мне нужно отсортировать по стране, а затем memTypeID, сохранив ключ массива (в PHP).Я считаю, что мне нужно использовать uksort, так как usort переписывает ключи массива.Я знаю, как создать простую функцию сравнения для одного элемента массива, но затрудняюсь понять, как я могу обрабатывать два.

Полученный массив должен быть:

Array
(
    [1602] => Array
        (
            [country] => Canada
            [memTypeID] => 9
        )
    [1600] => Array
        (
            [country] => Canada
            [memTypeID] => 10
        )

    [1601] => Array
        (
            [country] => United States
            [memTypeID] => 7
        )


)

1 Ответ

1 голос
/ 26 марта 2012
function cmp($a, $b) {
     if(strcmp($a['country'],$b['country']) != 0) {
         return $a['country'] > $b['country'] ? 1 : -1;
     }
   return $a['memTypeID'] > $b['memTypeID'] ? 1 : -1;
}

uasort($a, "cmp");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...