PHP 多维数组排序(usort,uasort)

  数字索引数组:

  bool usort( array &$array, callback $cmp_function )

  usort函数对指定数组(参数1)按指定方式(参数2)进行排序。

  当我们想对多维数组进行排序时,多维数组的每个元素又是一数组类型,而两个数组如何比较大小?这是需要用户自定义的(是按每个数组的第一元素比较还是…)。

  

复制代码 代码如下:

  <?php

  //定义多维数组

  $a = array(

  array("sky", "blue"),

  array("apple", "red"),

  array("tree", "green"));

  //自定义数组比较函数,按数组的第二个元素进行比较。

  function my_compare($a, $b) {

  if ($a[1] < $b[1])

  return -1;

  else if ($a[1] == $b[1])

  return 0;

  else

  return 1;

  }

  //排序

  usort($a, 'my_compare');

  //输出结果

  foreach($a as $elem) {

  echo "$elem[0] : $elem[1]<br />";

  }

  ?>

  结果为:

  

复制代码 代码如下:

  sky : blue

  tree : green

  apple : red

  关联数组:

  bool uasort(array &$array, callback $cmp_function)

  bool uksort(array &$array, callback $cmp_function)

  uasort, uksort用法与usort相同,其中uasort()对关联数组的值(value)进行排序,uksort()对关联数组的关键字(key)进行排序。

  

复制代码 代码如下:

  <?php

  $a = array(

  'Sunday' => array(0,'7th'),

  'Friday' => array(5,'5th'),

  'Tuesday'=> array(2,'2nd'));

  function my_compare($a, $b) {

  if ($a[1] < $b[1])

  return -1;

  else if ($a[1] == $b[1])

  return 0;

  else

  return 1;

  }

  //按$a数组的值的第二个元素(7th,5th,2nd)进行排序

  uasort($a, 'my_compare');

  foreach($a as $key => $value) {

  echo "$key : $value[0] $value[1]<br />";

  }

  //按$a数组的关键字的第二个字符(r,u,u)进行排序

  uksort($a, 'my_compare');

  foreach($a as $key => $value) {

  echo "$key : $value[0] $value[1]<br />";

  }

  ?>

  结果为:

  Tuesday : 2 2nd

  Friday : 5 5th

  Sunday : 0 7th

  Friday : 5 5th

  Sunday : 0 7th

  Tuesday : 2 2nd