按值降序对关联数组进行排序并保留键,然后为每个键提供排名编号

问题描述 投票:0回答:3

我有一个像这样的多维数组:

$person['id'] = $value;

我的样本数据是这样的:

$person[1]=110
$person[2]=200
$person[3]=300
$person[4]=100
$person[5]=220

现在,我想按它的值对其进行排序,所以我的数组应该像这样:

$person[3]=300
$person[5]=220
$person[2]=200
$person[1]=110
$person[4]=100

在此之后,我想打印它的排序次数...所以我的结果将是这样的:

$person[3]=1
$person[5]=2
$person[2]=3
$person[1]=4
$person[4]=5

这是我的完整代码:

$person = array();
$person[1]=110;
$person[2]=200;
$person[3]=300;
$person[4]=100;
$person[5]=220;

rsort($person);
foreach($person as $x => $x_value) {
   echo "Key=" . $x . ", Value=" . $x_value;
   echo "<br>";
}

就是这样,我坚持将值更改为我想要的值。有人知道如何创建我想要的代码吗?

php arrays sorting associative-array ranking
3个回答
1
投票

使用arsort:对数组进行逆序排序并保持索引关联

<?PHP
$person = array();
$person[1]=110;
$person[2]=200;
$person[3]=300;
$person[4]=100;
$person[5]=220;

arsort($person);
$i=0;
foreach($person as &$p){
    $p=++$i;
}

var_dump($person);

所以你的输出将是:

array(5) {
  [3]=>
  int(1)
  [5]=>
  int(2)
  [2]=>
  int(3)
  [1]=>
  int(4)
  [4]=>
  &int(5)
}

1
投票

使用 php 的

asort()
方法对数组进行排序

http://php.net/manual/en/function.asort.php

<?php
$person = array();
$person[1]=110;
$person[2]=200;
$person[3]=300;
$person[4]=100;
$person[5]=220;
asort($person);
foreach($person as $x => $x_value) {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

1
投票

使用

asort
代替
rsort

<?php
$person = array();
$person[1]=110;
$person[2]=200;
$person[3]=300;
$person[4]=100;
$person[5]=220;

asort($person);
foreach($person as $x => $x_value) {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>
© www.soinside.com 2019 - 2024. All rights reserved.