Получить самые высокие значения в 3-мерном массиве с помощью PHP - PullRequest
0 голосов
/ 19 августа 2011

У меня есть следующий массив:

Array
(
    [medium_priority] => Array
        (
            [0] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 60
                )

        )

    [high_priority] => Array
        (
            [0] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 95
                )

            [1] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 85
                )

            [2] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 80
                )

        )

    [low_priority] => Array
        (
            [0] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 20
                )

            [1] => Array
                (
                    [module] => a
                    [block] => b
                    [message] => c
                    [weight] => 30
                )

        )

)

Используя PHP, я хочу получить массив, состоящий из пяти значений с наибольшим значением weight, например:

Array
(               
    [0] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 95
        )

    [1] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 85
        )

    [2] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 80
        )               

    [3] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 60
        )

    [4] => Array
        (
            [module] => a
            [block] => b
            [message] => c
            [weight] => 30
        )

)

Конечно, это может быть достигнуто путем итерации по массиву с использованием цикла, чтобы «сгладить» массив и затем отсортировать его usort, но я думаю, что должен быть более простой и быстрый способ. Тем не менее, я не могу понять, что это будет.

Надеюсь, вы мне поможете!

1 Ответ

1 голос
/ 19 августа 2011

Псевдокод:

  1. Grab array_values из исходного набора данных.
  2. Используйте array_merge, чтобы объединить их все (по существу, выровнять)
  3. Используйте usort и вытолкните первые 5 элементов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...