首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php中数组排序中的Bugs

php中数组排序中的Bugs
EN

Stack Overflow用户
提问于 2017-01-19 12:00:05
回答 2查看 65关注 0票数 1

我需要一个等级制度,这就是我所拥有的。

代码语言:javascript
复制
<?php
$arr=array(10,11,4,2,10,3);
$rank = $arr;
rsort($rank);
foreach($arr as $sort) {                            
     echo $sort.' is ranking '.(array_search($sort, $rank) + 1).'<br>';
}
?>

我得到的结果是

代码语言:javascript
复制
10 is ranking 2
11 is ranking 1
4 is ranking 4
2 is ranking 6
10 is ranking 2
3 is ranking 5

问题是,当我有两个具有相同值的条目时,它跳过了下一个级别。我得到的结果显示,'10‘是排名2’的两倍。但后来它跳到了第四名。

我需要这样。

代码语言:javascript
复制
10 is ranking 2
11 is ranking 1
4 is ranking 3
2 is ranking 5
10 is ranking 2
3 is ranking 4

请帮帮我。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-19 12:27:10

是这样的。

因为您有多次10,所以rsort会多次映射它。

如果您想按自己的方式执行,则原始输入不能具有相同输入的多次倍。

使用独一无二,您可以解决这个问题,因此您将始终有一个独特的输入。

例如

代码语言:javascript
复制
$arr=array(10,11,4,2,10,3);
$rank = array_unique($arr); //This line have I changed
rsort($rank);
foreach($arr as $sort) {                            
     echo $sort.' is ranking '.(array_search($sort, $rank) + 1).'<br>';
}
票数 2
EN

Stack Overflow用户

发布于 2017-01-19 12:30:56

代码语言:javascript
复制
<?php
$arr=array(10,11,4,2,10,3);
$rank = $arr;
rsort($rank);

foreach($arr as $sort) { 
  if($sort <= 4){
       echo $sort.' is ranking '.(array_search($sort, $rank)).'<br>';
   }else{
      echo $sort.' is ranking '.(array_search($sort, $rank) + 1).'<br>';
   }
}
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41741294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档