如何只对具有相同值的数组的键进行排序?

时间:2015-12-03 18:13:27

标签: php arrays sorting

这是我的阵列(在我做完后):

array(4) {
  ["3"]=>
  float(24)
  ["4"]=>
  float(50)
  ["2"]=>
  float(50)
  ["1"]=>
  float(50)
}

按其值排序。这没关系,但是如果值相同,我想按键对这些值进行排序。

如果我使用ksort(myarray),我的数组按键排序:

array(4) {
  ["1"]=>
  float(50)
  ["2"]=>
  float(50)
  ["3"]=>
  float(24)
  ["4"]=>
  float(50)
}

但是它不再按值排序了。

我想要达到的结果是:

   array(4) {
      ["3"]=>
      float(24)
      ["1"]=>
      float(50)
      ["2"]=>
      float(50)
      ["4"]=>
      float(50)
    }

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

ksort($myarray);
asort($myarray);

编辑: 解释,当你第一次使用kso​​rt函数时,你的数组将按键编号排序,然后使用asort函数,它将按照值对数组进行排序,并保持具有相同值的元素的键顺序。

答案 1 :(得分:0)

我找到了解决方案:

$tag = array(); 
$num = array();

foreach($myarray as $key => $value){ 
$tag[] = $key; 
$num[] = $value; 
}

array_multisort($num, SORT_ASC, $tag, SORT_ASC, $myarray);