主页
软件技术
返回
PHP二维数组的简易排序

        有时候我们需要对二维数组的某个键的值进行排序,这里就是讨论这个问题。我们可以使用array_multisort()这个函数。array_multisort() 函数对多个数组或多维数组进行排序。

        参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

        第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

        SORT_ASC - 默认,按升序排列。(A-Z)

        SORT_DESC - 按降序排列。(Z-A)

        随后可以指定排序的类型:

        SORT_REGULAR - 默认。将每一项按常规顺序排列。

        SORT_NUMERIC - 将每一项按数字顺序排列。

        SORT_STRING - 将每一项按字母顺序排列。 语法:array_multisort(array1,sorting order,sorting

        type,array2,array3...)

        array1:必需。规定输入的数组。

        sorting order:可选。规定排列顺序。可能的值是 SORT_ASC 和

        SORT_DESC。

        sorting type:可选。规定排序类型。可能的值是SORT_REGULAR、

        SORT_NUMERIC和SORT_STRING。

        array2:可选。规定输入的数组。

        array3:可选。规定输入的数组。

        字符串键名将被保留,但是数字键将被重新索引,从 0 开始,并以 1 递增。可以在每个数组后设置排序顺序和排序类型。如果没有设置,每个数组参数会使用默认值。

        下面是一个例子:

        01 <?php

        02

        03 $arr = '';

        04

        05 echo '二维数组如下:'.'<br / >'; 06 for($i=0; $i<=5; $i++)

        07 {

        08 $arr[$i]['val'] = mt_rand(1, 100); 09 $arr[$i]['num'] = mt_rand(1, 100); 10 }

        11

        12 echo '<pre>';

        13 print_r($arr);

        14 echo '</pre>';

        15

        16 echo '从二维数组中抽出键为val,单独成另一个数组:'.'<br / >';

        17 foreach ($arr as $key => $row) 18 {

        19 $vals[$key] = $row['val']; 20 $nums[$key] = $row['num']; 21 }

        22

        23 echo '<pre>';

        24 print_r($vals);

        25 echo '</pre>';

        26

        27 echo '对其进行排序:'.'<br / >'; 28 array_multisort($vals, SORT_ASC, $arr); 29

        30 echo '<pre>';

        31 print_r($vals);

        32 echo '</pre>';

        33

        34 ?>

        运行结果:

        01 二维数组如下:

        02 Array

        03 (

        04 [0] => Array

        05 (

        06 [val] => 46 07 [num] => 49 08 )

        09

        10 [1] => Array

        11 (

        12 [val] => 8 13 [num] => 24 14 )

        15

        16 [2] => Array

        17 (

        18 [val] => 37 19 [num] => 3 20 )

        21

        22 [3] => Array

        23 (

        24 [val] => 32 25 [num] => 35 26 )

        27

        28 [4] => Array

        29 (

        30 [val] => 19 31 [num] => 38 32 )

        33

        34 [5] => Array

        35 (

        36 [val] => 30

        37 [num] => 37

        38 )

        39

        40 )

        41 从二维数组中抽出键为val,单独成另一个数组: 42 Array

        43 (

        44 [0] => 46

        45 [1] => 8

        46 [2] => 37

        47 [3] => 32

        48 [4] => 19

        49 [5] => 30

        50 )

        51 对其进行排序:

        52 Array

        53 (

        54 [0] => 8

        55 [1] => 19

        56 [2] => 30

        57 [3] => 32

        58 [4] => 37

        59 [5] => 46

        60 )

        我们将得到一个按val升序排序的二维数组。

        


2010年一级建造师考试《市政公用工程》小抄总结(34)
景观工程施工组织设计172p
2015年咨询工程师《宏观经济政策与发展规划》模拟题(四)
公跨铁大桥25m空心板梁架设专项方案(63页)
热网改造施工组织设计
顺德一座电梯天桥工程造价为720万 却有下行无上行
2012一级建造师《项目管理》正版考试用书增值服务第四次(二)
安全工程师2015年辅导:铅冶炼防尘防毒技术规程(GB/T17398—1998)1
信息发布:名易软件http://www.myidp.net