php array_multisort

php array_multisort

array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。

注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。

注释:您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。

 

xample #3 对数据库结果进行排序

本例中 data 数组中的每个单元表示一个表中的一行。这是典型的数据库记录的数据集合。

例子中的数据如下:

volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

数据全都存放在名为 data 的数组中。这通常是通过循环从数据库取得的结果,例如 mysql_fetch_assoc()

<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?> 


本例中将把 volume 降序排列,把 edition 升序排列。

现在有了包含有行的数组,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序。

<?php
// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?> 


数据集合现在排好序了,结果如下:

volume | edition
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7

 例子:

<?php
$a1=array("Dog","Dog","Cat");
$a2=array("Pluto","Fido","Missy");
array_multisort($a1,SORT_ASC,$a2,SORT_DESC);
print_r($a1);
print_r($a2);

 结果:

Array
(
    [0] => Cat
    [1] => Dog
    [2] => Dog
)
Array
(
    [0] => Missy
    [1] => Pluto
    [2] => Fido
)

解析:在这个例子中,首先对 $a1数组进行SORT_ASC升序排序,cat在$a1中排在第一位。Missy与cat是一一对应的关系,所以排在$a2的第一位。

因在$a1数组中$a1[1]=Dog,$a1[0]=Dog,所以对$a2中$a2[1],$a2[2]进行SORT_DESC降序排序,Pluto在前,Fido在后。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113066.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab矩阵拼接

    matlab矩阵拼接matlab中矩阵拼接分为行拼接和列拼接

    2022年6月25日
    18
  • Linux LAMP架构介绍及配置「建议收藏」

    Linux LAMP架构介绍及配置「建议收藏」LinuxLAMP架构介绍及配置一、LAMPLAMP平台概述LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言LAMP各组件主要作用(平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与其他三个组件提供更好的稳定性,兼容性(AMP组件也

    2022年10月16日
    0
  • Linux中安装tree命令

    Linux中安装tree命令在CentOS系统的普通用户下,使用sudoyum-yinstalltree下载tree命令,在ubuntu系统的普通用户下,使用sudoapt-getinstalltree下载tree命令

    2022年7月24日
    7
  • java单例模式——详解JAVA单例模式及8种实现方式

    java单例模式——详解JAVA单例模式及8种实现方式##单例模式是最简单也是最基础的设计模式之一,下边一起学习一下单例模式!一.单例模式的定义:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个PrinterSpooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用

    2022年7月8日
    13
  • visio 2013下载安装「建议收藏」

    visio 2013下载安装「建议收藏」Visio2013ed2k://|file|cn_visio_professional_2013_with_sp1_x86_and_x64_dvd_3911008.iso|1099735040|EB4F690733452B45D38C0EFE9D53E7FA|/密钥VisioProfessional2013:2NYF6-QG2CY-9F8XC-GWMBW-29VV8

    2022年9月26日
    0
  • 如何制作bt种子文件「建议收藏」

    首先,先整一个比特彗星然后打开点击文件,点击制作torrent文件在tracker服务器这一项里添加这些服务器http://torrentzilla.org/announcehttp://kinorun.com/announce.phphttp://torrent-team.net/announce.phphttp://bt.3dmgame.com:2710/announcehttp://tracker.ali213.net:8080/announcehttp://bt.ali.

    2022年4月7日
    145

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号