php 我如何排序30个不同的数字,从最高的数字是1148到最低的449,从而排名1149为'1'和449为'30'将升值[已关闭]

6jygbczu  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(124)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
我试着对数字进行排名,但我得到了排名19的1149,这是最高的千和排名1的940,这是最高的百。我希望这是排名相应的排名,其中排名1149为1,然后最小的值为30,然后每隔一个数字将下降到位。
我尝试使用rank()对数字进行排序

gev0vcfq

gev0vcfq1#

假设您有一个数字数组(您没有指定),您可以使用rsort()按照您要查找的正确顺序对数字进行排序。
如果你同意排名从0开始:

<?php

$numbers = [30, 874, 320, 940, 1149]; // your numbers

// Sort the numbers in descending order
rsort($numbers);

print_r(array_flip($numbers));

结果:

Array
(
    [1149] => 0
    [940] => 1
    [874] => 3
    [320] => 2
    [30] => 4
)

如果你想让他们1:

<?php

$numbers = [30, 874, 320, 940, 1149]; // your numbers

// Sort the numbers in descending order
rsort($numbers);

// Assign ranks
$ranks = [];

for ($i = 1; $i <= count($numbers); $i++) {
    $ranks[$numbers[$i-1]] = $i;
}

print_r($ranks);

输出:

Array
(
    [1149] => 1
    [940] => 2
    [874] => 3
    [320] => 4
    [30] => 5
)

相关问题