Как я могу отсортировать многомерный массив с помощью php? - PullRequest
0 голосов
/ 27 октября 2010

Привет, я должен отсортировать этот массив в desc. заказ на основе рейтинговой оценки с использованием php. Как я могу это сделать.

Array
(
    [0] => Array
        (
            [rating_postid] => 26
            [raCnt] => 6
            [sRate] => 18
            [ratingVal] => 3
        )

    [1] => Array
        (
            [rating_postid] => 714
            [raCnt] => 3
            [sRate] => 14
            [ratingVal] => 4.6666666666667
        )

    [2] => Array
        (
            [rating_postid] => 14
            [raCnt] => 4
            [sRate] => 12
            [ratingVal] => 3
        )

    [3] => Array
        (
            [rating_postid] => 290
            [raCnt] => 2
            [sRate] => 10
            [ratingVal] => 5
        )

    [4] => Array
        (
            [rating_postid] => 194
            [raCnt] => 2
            [sRate] => 8
            [ratingVal] => 4
        )

    [5] => Array
        (
            [rating_postid] => 134
            [raCnt] => 2
            [sRate] => 6
            [ratingVal] => 3
        )

    [6] => Array
        (
            [rating_postid] => 707
            [raCnt] => 1
            [sRate] => 5
            [ratingVal] => 5
        )

)

Ответы [ 3 ]

3 голосов
/ 27 октября 2010

Используйте usort:

function sortIt( $a, $b ){
    return $b['ratingVal'] - $a['ratingVal'];
}

usort( $yourArray, "sortIt" );

В порядке возрастания поменяйте местами $a и $b в вычитании.

usortФункция позволяет вам создать свою собственную функцию сортировки

1 голос
/ 27 октября 2010

Вы пометили свой код "php5.3", поэтому я собираюсь дать специальный ответ 5.3.

Адаптация кода Хармена:

usort( $yourArray, function($a, $b) {
    if( $a['ratingVal'] == $b['ratingVal'] )
        return 0;
    return ( $a['ratingVal'] < $b['ratingVal'] ) ? 1 : -1;
} );

Используются usort и анонимные функции , новое дополнение в PHP 5.3.

1 голос
/ 27 октября 2010

Если вы извлекаете эти данные из базы данных mysql (как я вижу, указан тег mysql), вы можете использовать оператор ORDER BY в своем запросе.

Если это не подходит, вам нужно реализовать функцию сравнения и использовать функцию usort () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...