douchungu0859 2014-04-03 08:04
浏览 473
已采纳

PHP中数组值的排名/位置

I have an array with these values, Array ( [0] => 12 [1] => 17 [2] => 5 [3] => 27 [4] => 5 ) and I need to find out ranking/position of each value ie,

for 27 - Rank 1 
for 17 - Rank 2 
for 12 - Rank 3 
for 5 - Rank 4 
for 5 - Rank 4 (duplicate value in the array) 

and these need to be in the same order as the array, so that output should be as follow

12 - Rank 3 
17 - Rank 2 
5 - Rank 4 
27 - Rank 1 
5 - Rank 4 
  • 写回答

5条回答 默认 最新

  • douma5954 2014-04-03 08:18
    关注

    This should work (including duplicate values having the same rank):

    $values = array();
    $values[0] = 5;
    $values[1] = 12;
    $values[2] = 19;
    $values[3] = 9;
    $values[4] = 5;
    
    $ordered_values = $values;
    rsort($ordered_values);
    
    foreach ($values as $key => $value) {
        foreach ($ordered_values as $ordered_key => $ordered_value) {
            if ($value === $ordered_value) {
                $key = $ordered_key;
                break;
            }
        }
        echo $value . '- Rank: ' . ((int) $key + 1) . '<br/>';
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解