本文介绍了如何在 PHP 中对数组的索引进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在我的系统中排名.我有一个数组 $arr = array(120,26,38,96,22);.我需要在不改变它们的位置的情况下对索引进行排名.

I need rank in my system. I have an array $arr = array(120,26,38,96,22);. I need to rank the index inside without changing their position.

我需要的输出类似于:

120 是 1 级,26 是 4 级,38 是 3 级,96 是 2 级,22 是 5 级

我试过了,但都排在第 1 位:

I've tried this, but all ranked as rank 1:

<?php
$arr = array(120,26,38,96,22);
$rank = 0;
$score=false;
$rows = 0;

foreach($arr as $sort){
    $rows++;
    if($score != $arr){
        $score = $arr;
        $rank = $rows;
    }echo $sort.' is rank '.$rank.'</br>';
}
?>

而且我还需要数组长度是动态的.

And also I need the array length to be dynamic.

推荐答案

这是一种方法:

$arr  = array(120,26,38,96,22);
$rank = $arr;
rsort($rank);

foreach($arr as $sort) {
    echo $sort. ' is rank ' . (array_search($sort, $rank) + 1) . '</br>';
}

  • 将原始数组复制为 $rank 并反向排序,使键为 rank -1
  • 循环原始数组并在 $rank 中搜索该值,返回键(等级)
  • 加 1,因为键从 0 开始
    • Copy the original array as $rank and sort in reverse so the keys will be the rank -1
    • Loop the original array and search for that value in $rank returning the key (rank)
    • Add 1 since keys start at 0
    • 或者其他可能:

      $arr  = array(120,26,38,96,22);
      $rank = $arr;
      rsort($rank);
      $rank = array_flip($rank);
      
      foreach($arr as $sort) {
          echo $sort . ' is rank '. ($rank[$sort] + 1) . '</br>';
      }
      

      • 将原始数组复制为 $rank 并反向排序,使键为 rank -1
      • 翻转 $rank 数组以获取值作为键并将排名作为值
      • 循环原始数组并使用该值作为$rank键获得排名
      • 加 1,因为键从 0 开始
        • Copy the original array as $rank and sort in reverse so the keys will be the rank -1
        • Flip the $rank array to get values as keys and rank as values
        • Loop the original array and use the value as the $rank key to get the rank
        • Add 1 since keys start at 0
        • 这篇关于如何在 PHP 中对数组的索引进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-17 20:05
查看更多