0

I have an array $data as below

[data] => Array
        (
            [user1] => Array
                (
                    [score] => 10
                )

            [user2] => Array
                (
                    [score] => 15
                )

            [user3] => Array
                (
                    [score] => 12
                )

            [user4] => Array
                (
                    [score] => 1
                )
)

I am looking for the Ranking of the array based on Score having maximum score as Rank 1

Output:

user2 -> 1
user3 -> 2
user1 -> 3
user4 -> 4

Any suggestions how this could be achieved?

Guns
  • 2,678
  • 2
  • 23
  • 51

2 Answers2

2

You can use array_multisort function with descending option to achieve this

$array = array('data' => array('user1' => array('score' => 10 ),
                                'user2' => array('score' => 15),
                                'user3' => array('score' => 12),
                                'user4' => array('score' => 1),
                              )
                );

array_multisort($array['data'], SORT_DESC);
var_dump($array);   

This will order your array to

array (size=1)
  'data' => 
    array (size=4)
      'user2' => 
        array (size=1)
          'score' => int 15
      'user3' => 
        array (size=1)
          'score' => int 12
      'user1' => 
        array (size=1)
          'score' => int 10
      'user4' => 
        array (size=1)
          'score' => int 1
Fabio
  • 23,183
  • 12
  • 55
  • 64
1

TO sort you array you have to use asort($array) function.

Neel
  • 19
  • 1