【发布时间】: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 努力工作。谢谢
-
这不是重复的,他要求按数字和字母顺序对数组进行排序,优先级是数字。