3v4l.org

run code in 300+ PHP versions simultaneously
<?php $members = array( array( 'num' => 2, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 2, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 3, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 3, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 3, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 3, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 3, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 5, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 9, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 9, 'rank' => 0, 'dense_rank' => 0, ), array( 'num' => 9, 'rank' => 0, 'dense_rank' => 0, ) ); $denseRank = 0; $gappedRank = 0; foreach ($members as &$row) { $denseRanks[$row['num']] ??= ++$denseRank; $row['dense_rank'] = $denseRanks[$row['num']]; ++$gappedRank; $gappedRanks[$row['num']] ??= $gappedRank; $row['rank'] = $gappedRanks[$row['num']]; // for better presentation: echo json_encode($row) . "\n"; } //var_export($members);

preferences:
28.38 ms | 404 KiB | 5 Q