php array_multisort

举报
lxw1844912514 发表于 2022/03/27 02:33:04 2022/03/27
【摘要】 array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。 注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。 注释:您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,...

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()


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

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

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


      
  1. <?php
  2. // 取得列的列表
  3. foreach ($data as $key => $row) {
  4. $volume[$key] = $row['volume'];
  5. $edition[$key] = $row['edition'];
  6. }
  7. // 将数据根据 volume 降序排列,根据 edition 升序排列
  8. // 把 $data 作为最后一个参数,以通用键排序
  9. array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
  10. ?>

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


      
  1. volume | edition
  2. -------+--------
  3. 98 | 2
  4. 86 | 1
  5. 86 | 6
  6. 85 | 6
  7. 67 | 2
  8. 67 | 7

 例子:


      
  1. <?php
  2. $a1=array("Dog","Dog","Cat");
  3. $a2=array("Pluto","Fido","Missy");
  4. array_multisort($a1,SORT_ASC,$a2,SORT_DESC);
  5. print_r($a1);
  6. 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在后。

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/100028670

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。