登录  /  注册

php排序函数详细讲解(附实例)

王林
发布: 2019-08-31 14:36:20
原创
4818人浏览过

php排序函数详细讲解(附实例)

排序的方法多种多样,通常情况下,我们经常使用到的数组排序函数有:sort() 、rsort()、asort() 、arsort()、ksort()、krsort()。下面为大家一一详细介绍。

sort(array,sortingtype);
登录后复制

截图01.jpg

0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)

1 = SORT_NUMERIC - 把每一项作为数字来处理。

2 = SORT_STRING - 把每一项作为字符串来处理。

3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。

4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。

5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

定义和用法:

sort() 函数对索引数组进行升序排序。

rsort() 函数对索引数组进行降序排序,其他用法一样。

注释:本函数为数组中的单元赋予新的键名。原有的键名将被删除。

如果成功则返回 TRUE,否则返回 FALSE。

提示:请使用 rsort() 函数对索引数组进行降序排序。

sort() 函数用于对数组单元从低到高进行排序。

rsort() 函数用于对数组单元从高到低进行排序。

asort() 函数用于对数组单元从低到高进行排序并保持索引关系。

PHP asort() 函数用于对数组单元从低到高进行排序并保持索引关系,如果成功则返回 TRUE,失败则返回 FALSE。

arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。

PHP arsort() 函数行为与 asort() 相反,对数组单元进行由高到低排序并保持索引关系,请参考 asort() 函数使用。

ksort() 函数用于对数组单元按照键名从低到高进行排序。

PHP ksort() 函数用于对数组单元按照键名从低到高进行排序,如果成功则返回 TRUE,失败则返回 FALSE。本函数会保留原来的键名,因此常用于关联数组。

krsort() 函数用于对数组单元按照键名从高到低进行排序。

PHP krsort() 函数行为与 ksort() 相反,对数组单元按照键名进行由高到低排序,请参考 ksort() 函数使用。

使用用户自定义的比较函数对数组 $a 中的元素进行排序:

usort(array,myfunction);
登录后复制
<?php
function my_sort($a,$b){
   if ($a==$b) return 0;
   return ($a<$b)?-1:1;
}

$a=array(4,2,8,6);
usort($a,"my_sort");

$arrlength=count($a);
for($x=0;$x<$arrlength;$x++)
   {
      echo $a[$x];
      echo "<br>";
   }?>
登录后复制
1、使用array_multisort

使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下:

代码如下:<?php
$ages = array();
foreach ($users as $user) {
  $ages[] = $user[&#39;age&#39;];
}
array_multisort($ages, SORT_ASC, $users);

执行后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用:

代码如下:
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
2、使用usort
使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列:

代码如下:
<?php
      usort($users, function($a, $b) {
      $al = strlen($a[&#39;name&#39;]);
      $bl = strlen($b[&#39;name&#39;]);
      if ($al == $bl) 
          return 0;      
          return ($al > $bl) ? -1 : 1;
    });

这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,
并计算长度,而后比较长度就可以了。
登录后复制

以上是工作中常用的数组排序方法,想了解更多相关问题请访问PHP中文网:PHP视频教程

以上就是php排序函数详细讲解(附实例)的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号