Maison  >  Article  >  php教程  >  PHP多维数组排序保持索引对应

PHP多维数组排序保持索引对应

WBOY
WBOYoriginal
2016-06-06 19:53:08904parcourir

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 实际开发中,多多少少都会遇到数组的排序问题,除了常规的写简单的排序算法,PHP 还提供了内置数组排序函数,本次重点分享一下:uasort 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  实际开发中,多多少少都会遇到数组的排序问题,除了常规的写简单的排序算法,PHP 还提供了内置数组排序函数,本次重点分享一下:uasort  使用用户自定义的比较函数对数组中的值进行排序并保持索引关联,可排序多维数组,本文重点讲解此函数。

  uasort 函数

  参数类型:bool uasort ( array &$array, callable $cmp_function)

  本函数对数组排序并保持索引和单元之间的关联。

  主要用于对那些单元顺序很重要的结合数组进行排序。比较函数是用户自定义的。

  成功时返回 TRUE, 或者在失败时返回 FALSE.

  数组排序实例(非class中):

  复制代码

  1 /**

  2  * 自定义排序函数

  3  * @param $param1

  4  * @param $param2

  5  * @return 0(不移动) 1(正向调换顺序) -1(逆向调换顺序)

  6  */

  7

  8 function my_sort($param1, $param2){

  9     if($param1 == $param2) return 0;

  10     else return $param1 > $param2 ? 1 : -1;

  11 }

  12

  13 $arr = array(

  14             'a'=>'20',

  15             'b'=>'1',

  16             'c'=>'10',

  17             'd'=>'5',

  18             'e'=>'21',

  19             'f'=>'4',

  20             'g'=>'3',

  21         );

  22

  23 uasort($arr, 'my_sort');

  24

  25 var_dump($arr);

  26

  27 /*输出值

  28 array (size=7)

  29   'b' => string '1' (length=1)

  30   'g' => string '3' (length=1)

  31   'f' => string '4' (length=1)

  32   'd' => string '5' (length=1)

  33   'c' => string '10' (length=2)

  34   'a' => string '20' (length=2)

  35   'e' => string '21' (length=2)

  36 */

  复制代码

  多维数组排序实例(非class中):

  复制代码

  /**

  * 自定义排序函数

  * @param $param1

  * @param $param2

  * @return 0(不移动) 1(正向调换顺序) -1(逆向调换顺序)

  */

  function my_sort($param1, $param2){

  if($param1['value'] == $param2['value']) return 0;

  else return $param1['value'] > $param2['value'] ? 1 : -1;

  }

  $arr = array(

  'a'=>array('key'=>'定义1', 'value'=>'20'),

  'b'=>array('key'=>'定义2', 'value'=>'1'),

  'c'=>array('key'=>'定义3', 'value'=>'10'),

  'd'=>array('key'=>'定义4', 'value'=>'5'),

  'e'=>array('key'=>'定义5', 'value'=>'21'),

  'f'=>array('key'=>'定义6', 'value'=>'4'),

  'g'=>array('key'=>'定义7', 'value'=>'3'),

  );

[1] [2] [3] 

PHP多维数组排序保持索引对应

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn