当前位置:   article > 正文

PHP数组排序_php 四维数组字段排序

php 四维数组字段排序

一、内容:

1、一维数组排序:以sort为例:

1、语法

  • bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  • 参数说明:
参数说明
array要排序的数组。
sort_flags可选的第二个参数 sort_flags 可以用以下值改变排序的行为:
  • sort_flags值为:

    • SORT_REGULAR - 正常比较单元(不改变类型)
    • SORT_NUMERIC - 单元被作为数字来比较
    • SORT_STRING - 单元被作为字符串来比较
    • SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。
    • SORT_NATURAL - 和 natsort() 类似对每个单元以“自然的顺序”对字符串进行排序。 PHP 5.4.0 中新增的。
    • SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符
  • 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。

  • 类似函数:

    • sort() - 根据值,以升序对数组排序[索引重置]
    • rsort() - 根据值,以降序对数组排序[索引重置]
    • asort() - 根据值,以升序对关联数组进行排序[保持索引关系]
    • ksort() - 根据键,以升序对关联数组进行排序[保持索引关系]
    • arsort() - 根据值,以降序对关联数组进行排序[保持索引关系]
    • krsort() - 根据键,以降序对关联数组进行排序[保持索引关系]

2、使用:

  • 代码:
$array1 = [ 3=>'three', 5=>'five', 4=>'four', 1=>'one', 2=>'two' ];
$array = $array1; sort($array);     var_export($array);    echo '<br/>';
$array = $array1; rsort($array);    var_export($array); echo '<br/>';
$array = $array1; asort($array);    var_export($array); echo '<br/>';
$array = $array1; ksort($array);    var_export($array); echo '<br/>';
$array = $array1; arsort($array);    var_export($array); echo '<br/>';
$array = $array1; krsort($array);    var_export($array); echo '<br/>';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 打印:
array ( 0 => 'five', 1 => 'four', 2 => 'one', 3 => 'three', 4 => 'two', )
array ( 0 => 'two', 1 => 'three', 2 => 'one', 3 => 'four', 4 => 'five', )
array ( 5 => 'five', 4 => 'four', 1 => 'one', 3 => 'three', 2 => 'two', )
array ( 1 => 'one', 2 => 'two', 3 => 'three', 4 => 'four', 5 => 'five', )
array ( 2 => 'two', 3 => 'three', 1 => 'one', 4 => 'four', 5 => 'five', )
array ( 5 => 'five', 4 => 'four', 3 => 'three', 2 => 'two', 1 => 'one', )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、多维数组排序:array_multisort — 对多个数组或多维数组进行排序

1、 语法:

  • bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $… ]]] )
  • array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
  • 参数说明:
参数说明
array1要排序的 array。
array1_sort_order之前 array 参数要排列的顺序。 SORT_ASC 按照上升顺序排序, SORT_DESC 按照下降顺序排序。 [此参数可以和 array1_sort_flags 互换],也可以完全删除,默认是 SORT_ASC 。
array1_sort_flags为 array 参数设定选项(同一维数组)
  • 返回
    成功时返回 TRUE, 或者在失败时返回 FALSE。

2、使用

1)、多个数组排序
$arr = [ 3, 7, 6, 1 ];
$arr2 = [ 'three', 'seven', 'six', 'one' ];
$arr3 = [ 6, 14, 12, 2 ];
array_multisort($arr, $arr2, $arr3);
var_export($arr); echo '<br/>';        //array ( 0 => 1, 1 => 3, 2 => 6, 3 => 7, )
var_export($arr2); echo '<br/>';    //array ( 0 => 'one', 1 => 'three', 2 => 'six', 3 => 'seven', )
var_export($arr3); echo '<br/>';    //array ( 0 => 2, 1 => 6, 2 => 12, 3 => 14, )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 分析
    • 如果多个数组的元素个数不同,则报错;
    • 第一个项目排序之后,其他的项目的位置也跟随第一个项目的位置移动了。
2)、排序多维数组
$arr = [
    [ 9, '7', 6, 1, 3 ],
    [ 'nine', 'seven', '6', 1, 3 ],
];
array_multisort($arr[0], SORT_ASC, SORT_STRING,    //array1_sort_order与array1_sort_flags参数位置可互换
    $arr[1], SORT_NUMERIC, SORT_DESC);
var_export($arr);    //array ( 0 => array ( 0 => 1, 1 => 3, 2 => 6, 3 => '7', 4 => 9, ), 1 => array ( 0 => 1, 1 => 3, 2 => '6', 3 => 'seven', 4 => 'nine', ), )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 分析:
    • $arr[0]被当作字符串以升序排列;$arr[1]被当作数字以降序排列。
      -[返回的怎么还是和1)、一样的,$arr[1]的顺序完全取决于$arr[0]]...???
3)、对数据库查询结果进行排序
  • 代码:
//先根据like降序,然后根据age升序
$arr = [
    ['like'=>99, 'age'=>18],
    ['like'=>77, 'age'=>23],
    ['like'=>111, 'age'=>8],
    ['like'=>66, 'age'=>24],
    ['like'=>33, 'age'=>21],
    ['like'=>99, 'age'=>31],
];
$likeArr = array_column($arr, 'like');
$ageArr = array_column($arr, 'age');
array_multisort($likeArr, SORT_DESC, $ageArr, SORT_ASC, $arr);
var_export($arr);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 打 印
array ( 0 => array ( 'like' => 111, 'age' => 8, ),
    1 => array ( 'like' => 99, 'age' => 18, ),
    2 => array ( 'like' => 99, 'age' => 31, ),
    3 => array ( 'like' => 77, 'age' => 23, ),
    4 => array ( 'like' => 66, 'age' => 24, ),
    5 => array ( 'like' => 33, 'age' => 21, ),
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、更多

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/648945
推荐阅读
相关标签
  

闽ICP备14008679号