欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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

程序员文章站 2022-05-19 09:45:35
...

欢迎进入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多维数组排序保持索引对应