Сортировать массив и упорядочить на основе некоторого значения

1

У меня есть такой массив

 [Defense] => Array
    (
        [0] => stdClass Object
            (
                [id] => 1
                [position] => G 
                [point] => 1.6

            )
        [1] => stdClass Object
            (
                [id] => 1
                [position] => F 
                [point] => 2.7
            )


        [2] => stdClass Object
            (
                [id] => 1
                [position] => C 
                [point] => 1.4
            )
        [3] => stdClass Object
            (
                [id] => 2
                [position] => C 
                [point] => 1.7
            )

        [4] => stdClass Object
            (
                [id] => 2
                [position] => D 
                [point] => 1.1
            )
        [5] => stdClass Object
            (
                [id] => 1
                [position] => F 
                [point] => 1.7
            ) 

        [6] => stdClass Object
            (
                [id] => 1
                [position] => G 
                [point] => 1.6

            )

        [7] => stdClass Object
            (
                [id] => 1
                [position] => G 
                [point] => 1.8

            )
       [8] => stdClass Object
        (
                [id] => 2
                [position] => D
                [point] => 1.5
        )   
  )

Я хочу отсортировать массив на основе точки, descending в PHP. Кроме того, все позиции входят в последовательность (все G чем все F так далее), например:

  [Defense] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 1
                    [position] => G 
                    [point] => 1.8

                )
             [1] => stdClass Object
                (
                    [id] => 1
                    [position] => G 
                    [point] => 1.6

                )
            [2] => stdClass Object
                (
                    [id] => 1
                    [position] => G 
                    [point] => 1.6

                )   
            [3] => stdClass Object
                (
                    [id] => 1
                    [position] => F 
                    [point] => 2.7
                )
            [4] => stdClass Object
                (
                    [id] => 1
                    [position] => F 
                    [point] => 1.7
                )

            [5] => stdClass Object
                (
                    [id] => 1
                    [position] => C 
                    [point] => 1.7
                )
            [6] => stdClass Object
                (
                    [id] => 2
                    [position] => C 
                    [point] => 1.4 
                )
            [7] => stdClass Object
                (
                    [id] => 2
                    [position] => D
                    [point] => 1.5
                )
            [8] => stdClass Object
                (
                    [id] => 2
                    [position] => D 
                    [point] => 1.1
                )

      )

Любая помощь?

  • 0
    Я бы сказал, взгляните на функции сортировки массива usort() : usort() или uasort() .
  • 0
    Постройте логику сортировки алгоритма или используйте встроенную функцию сортировки массива. Передайте переменную "точка или позиция" в массиве в функции сортировки, и они будут отсортированы соответственно.
Теги:
arrays

1 ответ

1
Лучший ответ

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

usort($array,function($a,$b){
if($a->position == $b->position )
    return $a->point < $b->point;
else
    return $a->position < $b->position;
});
var_dump($array);
  • 0
    Спасибо за ответ, ребята .. @ sam код, который вы отправили, сортируется по позиции, но не выполняет сортировку по «точке». Я хочу отсортировать по точке «по убыванию»
  • 0
    Запустите вышеописанную функцию, которую я написал, она сначала проверяет точку, если точки равны, она сортирует, используя положение, иначе она сортирует, используя точку, которая является значением по умолчанию, я предлагаю вам запустить ее в вашем PHP-скрипте, я запустил ее и показывая идеальный результат
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню