数组-按值排序,如果匹配值则优先级


Array - Order by value then priority if matching values

我的代码的目的是找到3个最低值,然而,如果它们中的两个是匹配的,它需要优先考虑哪一个出现在底部3。

这是我的数组

Array
(
    [1] => 50.00
    [5] => 59.38
    [4] => 62.50
    [2] => 62.50
    [7] => 66.67
    [8] => 68.75
    [6] => 80.00
    [9] => 91.67
)

优先级为Key,分数为Value。

根据这个例子;键2应该在键4之上,因为它们共享相同的值,但键2的优先级更高。

我希望这是有意义的,因为我开始怀疑我的理智了,哈哈。

很多谢谢,斯科特。

稍微重新格式化,然后排序:

$helpArr = array();
foreach ($yourArray as $prio => $score) {
  $helpArr[] = array($score, $prio);
}
sort($helpArray);

将它恢复到你的格式:

$yourArray = array();
foreach ($helpArr as $h) {
  $yourArray[$h[0]] = $h[1];
}

您可以使用sort和arsort函数来满足您的要求。检查下面的代码可能会对您有所帮助。

<?php
 $arr = array(1=>50.00,5=>59.38,4=>62.50,2=>62.50,7=>66.67,8=>68.75,6=>80.00,9=>91.67);
 ksort($arr);
 arsort($arr);
 print_r($arr);
?>

输出:

   Array ( [9] => 91.67 [6] => 80 [8] => 68.75 [7] => 66.67 [4] => 62.5 [2] => 62.5 [5] => 59.38 [1] => 50 )

现在你将有列表3值在你的数组的底部。