【问题标题】:Alphabetically sort keys which has same value按字母顺序对具有相同值的键进行排序
【发布时间】:2014-10-26 09:48:32
【问题描述】:

我有一个数组,我已经用arsort 进行了排序,因此具有最高整数的值首先显示,最低整数显示在最后

我现在的问题是我需要按字母顺序对键进行排序,但仍然按值保留我的排序顺序。在使用 arsort 按值排序之前,我尝试使用 krsort 按字母顺序对键进行排序,但这仍然给了我相同的输出

这是我的原始数组在应用array_count_values 之前的样子

array(5) {
  [0]=>
  string(7) "Romance"
  [1]=>
  string(7) "Romance"
  [2]=>
  string(7) "Classic"
  [3]=>
  string(6) "Comedy"
  [4]=>
  string(6) "Comedy"
}

这就是结果的样子

array(3) {
  ["Romance"]=>
  int(2)
  ["Classic"]=>
  int(1)
  ["Comedy"]=>
  int(2)
}

这是我使用arsort 后的当前数组。正如我所说,如果我事先申请krsort,输出是一样的

array(3) {
  ["Romance"]=>
  int(2)
  ["Comedy"]=>
  int(2)
  ["Classic"]=>
  int(1)
}

我正在寻找的输出是

array(3) {
  ["Comedy"]=>
  int(2)
  ["Romance"]=>
  int(2)
  ["Classic"]=>
  int(1)
}

关于如何实现这一点的任何想法?

编辑

这是我完整的函数数组

array(3) {
  ["5 star"]=>
  array(4) {
    [0]=>
    string(7) "Romance"
    [1]=>
    string(7) "Romance"
    [2]=>
    string(6) "Comedy"
    [3]=>
    string(6) "Comedy"
  }
  ["4 star"]=>
  array(5) {
    [0]=>
    string(7) "Romance"
    [1]=>
    string(7) "Romance"
    [2]=>
    string(7) "Classic"
    [3]=>
    string(6) "Comedy"
    [4]=>
    string(6) "Comedy"
  }
  ["3 star"]=>
  array(4) {
    [0]=>
    string(7) "Classic"
    [1]=>
    string(7) "Romance"
    [2]=>
    string(7) "Classic"
    [3]=>
    string(6) "Comedy"
  }
}

$term_list就是上面的数组

foreach ( $term_list as $key=>$value ) {
    echo $key;
    $counted_values = array_count_values($value);
    arsort($counted_values, SORT_NUMERIC);

    foreach ( $counted_values as $counted_values_keys=>$counted_value ) {
        echo '<li>' . $counted_values_keys . ' (' . $counted_value . ') </li>';
    }
}

【问题讨论】:

  • 按字母排序,然后按值排序。
  • 如上所述,这不起作用。
  • 为什么每件事都必须重复。我不明白这种疯狂。我赞成这个问题。在我看来,OP 努力工作。谢谢
  • 这不是重复的,他要求按数字和字母顺序对数组进行排序,优先级是数字。

标签: php arrays sorting


【解决方案1】:

Pieter 你可以使用下面的代码:-

$array = array("Romance" =>  2,"Classic" =>  1,"Comedy"  =>  2);
array_multisort(array_values($array), SORT_DESC, array_keys($array), SORT_ASC, $array);

这是一个重复的问题PHP array multiple sort - by value then by key?

我给出的代码由Jon Bernhardt回答。

【讨论】:

    猜你喜欢
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多