如何按出现值的数量对数组排序?

Gan*_*lay 4 php arrays sorting

我有以下数组:

$name_arr = array('raj','raj','ganesh','rahul','ganesh','mayur','raj','rahul');
Run Code Online (Sandbox Code Playgroud)

我想这样排序:

$final_arr = array('raj','raj','raj','ganesh','ganesh','rahul','rahul','mayur');
Run Code Online (Sandbox Code Playgroud)

我该如何实现?

Ana*_*Die 5

使用array_count_valuesarsort的简单方法:

$array = array_count_values($name_arr); //get all occurrences of each values
arsort($array);
print_r($array);//print occurrences array
$final_array = array();

foreach($array as $key=>$val){ // iterate over occurrences array
  for($i=0;$i<$val;$i++){ //apply loop based on occurrences number
    $final_array[] = $key; // assign same name to the final array
  }
}

print_r($final_array); // print final array
Run Code Online (Sandbox Code Playgroud)

输出:-https : //eval.in/847428

  • 这在计算上很昂贵-此问题有更简单的解决方案。 (2认同)