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

时间:2014-06-23 12:05:03

标签: php arrays sorting

我的代码的目标是找到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的优先级更高。

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

非常感谢, 斯科特。

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

您可以使用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);
?>

Out Put:

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

现在,您将在数组底部获得列表3值。