排序PHP数组中的列

jam*_*mer 2 php arrays asort ksort

我试图按照以下数据结构中的列进行排序:

 $counter = 1;
 $entity_list = array();

 foreach($result as $rec){
   $entity_list[$counter]['student_first_name'] = $rec->firstname;
   $entity_list[$counter]['student_last_name'] = $rec->lastname;
   $entity_list[$counter]['course_name'] = $rec->fullname;
   .
   .
   $counter++;
 }//end foreach
Run Code Online (Sandbox Code Playgroud)

这是$ entity_list数据结构的var_dump.

array (size=150)     
  1 => 
  array (size=3)
    'student_first_name' => string 'Jane' (length=6)
    'student_last_name' => string 'Smith' (length=7)
    'course_name' => string 'Algebra 1A-MOD' (length=14)

  2 => 
  array (size=3)
    'student_first_name' => string 'Fred' (length=6)
    'student_last_name' => string 'Jones' (length=7)
    'course_name' => string 'Algebra 1A-MOD' (length=14)
   .
   .
   .
Run Code Online (Sandbox Code Playgroud)

如何在此结构上使用asort()或ksort()?我想我应该使用kso​​rt(),因为它适用于密钥.我曾尝试过ksort($ entity_list,'student_last_name')或asort($ entity_list,'current_grade').

谢谢.

Phi*_*ult 6

你可以使用uasort

uasort($entity_list, 'mySort');

function mySort($a, $b) {
    if($a['student_last_name'] == $b['student_last_name']) {
        return 0;
    }
    return ($a['student_last_name'] < $b['student_last_name']) ? -1 : 1;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您的数据来自数据库,则ORDER BY会更轻松,更轻松.

  • 您还可以在 PHP7 或更高版本中使用 spaceship 运算符。大大提高了可读性。 (2认同)