3v4l.org

run code in 300+ PHP versions simultaneously
<?php $data = array( array('id' => 1, 'name' => 'John Snow', 'score' => 80), array('id' => 2, 'name' => 'John Fire', 'score' => 50), array('id' => 3, 'name' => 'John Water', 'score' => 79), array('id' => 4, 'name' => 'John Leaf', 'score' => 80), ); function cmp($a, $b) { if ($a['score'] == $b['score']) { return 0; } return ($a['score'] > $b['score']) ? -1 : 1; } uasort($data, 'cmp'); $rank = 1; $prev = false; foreach ($data as $i=>$d) { if (!$prev) { $data[$i]['rank'] = $rank; $prev = $d['score']; continue; } elseif ($prev != $d['score']) { $rank++; } $data[$i]['score'] = $rank; $prev = $d['score']; } print_r($data);
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
Array ( [0] => Array ( [id] => 1 [name] => John Snow [score] => 80 [rank] => 1 ) [3] => Array ( [id] => 4 [name] => John Leaf [score] => 1 ) [2] => Array ( [id] => 3 [name] => John Water [score] => 2 ) [1] => Array ( [id] => 2 [name] => John Fire [score] => 3 ) )
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28
Array ( [3] => Array ( [id] => 4 [name] => John Leaf [score] => 80 [rank] => 1 ) [0] => Array ( [id] => 1 [name] => John Snow [score] => 1 ) [2] => Array ( [id] => 3 [name] => John Water [score] => 2 ) [1] => Array ( [id] => 2 [name] => John Fire [score] => 3 ) )

preferences:
241.45 ms | 405 KiB | 398 Q