在PHP中,利用sort()、ksort()对多个数组进行排序很简单,使用它们,可以对一维数组进行关键字排序、按值排序、逆排序等。但是这些函数不能方便地用于多维数组。假设有一个数组定义如下:
$students = array(
256 => array('name' => 'John', 'grade' => 98),
23 => array('name' => 'Tom', 'grade' => 85),
9 => array('name' => 'Steve', 'grade' => 94),
363 => array('name' => 'Robert', 'grade' => 83),
69 => array('name' => 'Jack', 'grade' => 78)
);
或许我们需要按name或grade进行排序。为了对多维数组排序,我们需要定义自己的排序函数,然后告诉PHP在调用usort()、uasort()或者uksort()时使用我们自己定义的排序函数。
自定义的排序函数时必须接收两个参数,并且返回一个值表示哪一个参数应在前面。负数或false表示第一个参数应排在第二个参数前面,正数或true表示第二个参数应在前面,如果值为0,则表示两个参数值相等。
下面写一个按grade降序排序的自定义排序函数: