php的array_multisort()使用方法介绍

使用 array_multisort()函数对多个数组或多维数组进行排序的函数,正在研究数组排序、多维数组排序的朋友可以看看。

函数 bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $...]]] )

参数说明: 函数对多个数组或多维数组进行排序

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志
SORT_ASC - 默认,按升序排列
SORT_DESC - 按降序排列
随后可以指定排序的类型
SORT_REGULAR - 默认。将每一项按常规顺序排列。
SORT_NUMERIC - 将每一项按数字顺序排列。
SORT_STRING - 将每一项按字母顺序排列。
例:

代码如下:

<?php
$arr1 = array('10', 11, 100, 100, 'a');
$arr2 = array(1, 2, 3, '2', 5);
array_multisort($arr1, $arr2);
?>

结果为:
$arr1
Array ( [0] => 10 [1] => a [2] => 11 [3] => 100 [4] => 100 )
# '10'在与11, 100, 100比较时转换为整数10,小于其他三个数
# '10'在于'a'比较时作为字符串,其第一个字符'1'ascii码值为49小于‘a'(ascii值为97),所以‘10'为最小元素
# 'a'在于其他三个数字比较时,转换为整数0,小于其他三个数
$arr2
Array ( [0] => 1 [1] => 5 [2] => 2 [3] => 2 [4] => 3 )
# $arr2元素1与$arr1元素'10'位置对应,所以排在[0]位置
# $arr1[2] => 100, $arr1[3] => 100分别对应$arr2元素3, '2'。3大于'2',所以与2对应的$arr1[2] => 100排序后的下标为3,与3对应的$arr1[3] => 100排序的下标为4
总结----------
1.参与排序的数组元素数保持一致
2.排序数组元素位置对应如, ‘10' => 1 , 11 => 2
3.后边的数组在前边数组的顺序的基础上进行排序
4.前边的数组如遇相等的元素则比较后边的数组

下边就是使用的实例,手册上的例子不列了,就我自己工作中的几个。
工作中碰到最多的可能就是二维数组了,想试试三维数组,但是想想还是算了。


代码如下:

header('Content-Type: text/html; charset=utf-8');
echo '<pre>';
//原始数组格式
$array = array(
'key1' => array(
'item1' => '65',
'item2' => '35',
'item3' => '84',
),
'key2' => array(
'item1' => '24',
),
'key3' => array(
'item1' => '38',
'item3' => '45',
),
);
//要排序的键
//按照数组中的 item1进行排序
//你也可以换成item2
$sort = 'item1';
foreach($array as $k => $v)
{
$newArr[$k] = $v[$sort];
}
//这个函数如果执行正确他会直接改变原数组键值的顺序
//如果执行失败,那么他会返回 bool(false)
array_multisort($newArr,SORT_DESC, $array);
var_dump($array);
//---------------------排序后的数组打印效果 开始--------------------
array(3) {
["key1"]=>
array(3) {
["item1"]=>
string(2) "65"
["item2"]=>
string(2) "35"
["item3"]=>
string(2) "84"
}
["key3"]=>
array(2) {
["item1"]=>
string(2) "38"
["item3"]=>
string(2) "45"
}
["key2"]=>
array(1) {
["item1"]=>
string(2) "24"
}
}
//---------------------排序后的数组打印效果 结束---------------------

(0)

相关推荐

  • PHP array_multisort()函数的使用札记

    函数 bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $...]]] ) 参数说明: 函数对多个数组或多维数组进行排序 第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志 SORT_ASC - 默认,按升序排列 SORT_DESC - 按降序排列 随后可以指定排序的类型 SORT_REGULAR - 默认.将每一项按常规顺序排列

  • array_multisort实现PHP多维数组排序示例讲解

    array_multisort - 对多个数组或多维数组进行排序 说明 bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] ) array_multisort (PHP 4, PHP 5) 如果成功则返回 TRUE,失败则返回 FALSE. array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重

  • php中array_multisort对多维数组排序的方法

    本文实例讲述了php中array_multisort对多维数组排序的方法.分享给大家供大家参考.具体实现方法如下: function sort_array($array, $keyid, $order='asc', $type='number') { if(is_array($array)) { foreach($array as $val) { $order_arr[] = $val[$keyid]; } $order = ($order == 'asc') ? SORT_ASC: SORT_

  • php二维数组排序方法(array_multisort usort)

    例如像下面的数组: 复制代码 代码如下: $users = array(    array('name' => 'tom', 'age' => 20)    , array('name' => 'anny', 'age' => 18)    , array('name' => 'jack', 'age' => 22)); 希望能按照age从小到大进行排序.笔者整理了两个方法出来,分享给大家. 1.使用array_multisort 使用这个方法,会比较麻烦些,要将age

  • php 数组排序 array_multisort与uasort的区别

    Example:(简练) uasort($arr,create_function('$a, $b','return $a[\'line_num\']<$b[\'line_num\'];')); *************函数定义和语法************* array_multisort (PHP4 >= 4.0b4) array_multisort --- 排序复合或多样尺寸的数组 语法 : bool array_multisort (array ar1 [,mixed arg [,mi

  • php关于array_multisort多维数组排序的使用说明

    一.先看最简单的情况.有两个数组: 复制代码 代码如下: $arr1 = array(1,9,5); $arr2 = array(6,2,4); array_multisort($arr1,$arr2); print_r($arr1); // 得到的顺序是1,5,9 print_r($arr2); // 得到的顺序是6,4,2 我估计两个数组的值自始至终都是对应着的:1对应6,9对应2,5对应4. 我们再加多一个数组看看会怎样: 复制代码 代码如下: $arr1 = array(1,9,5);

  • php array_map array_multisort 高效处理多维数组排序

    对多维数组排序,通用的作法是1 获取利用排序的数据并且将其放入数组$arrSort. 其中键索引为要排序数组的索引,保证唯一性 2 利用排序函数sort等对$arrSort进行排序. 3 遍历$arrSort, 根据其索引,获取多维数组的数据,重新构造排序后的多维数组. 复制代码 代码如下: Array ( [0] => Array ( [link] => test [name] => test.rpm [type] => file [size] => 988.9k [mti

  • PHP使用array_multisort对多个数组或多维数组进行排序

    PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以行来排序--这类似于 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推.--这句话是理解此函数用法的关键. 第一个参数必须是一个数组.接下来的每个参数可以是数组或者是下面列出的排序标志. 排序顺序

  • 如何利用php array_multisort函数 对数据库结果进行复杂排序

    首先讲一下需求:数据库中有4个字段分别是id,volume,edition,name. 要求对查询结果按照volume+edition从大到小排序.下面将一下array_multisort函数array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 排序顺序标志:SORT_ASC – 按照上升顺序排序SORT_DESC – 按照下降顺序排序 排序类型标志:SORT_REGULAR –

  • php array_multisort 对数组进行排序详解及实例代码

    php 中array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序.本文章向大家讲解array_multisort函数的使用方法. array_multisort() 函数返回排序数组.您可以输入一个或多个数组.函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序. 注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增. 注释:您可以在每个数组后设置排序顺序和排序类型参数.如果

  • PHP数组函数array_multisort()用法实例分析

    本文实例分析了PHP数组函数array_multisort()用法.分享给大家供大家参考,具体如下: 有时候我们需要对二维数组的某个键的值进行排序,这里就是讨论这个问题.我们可以使用array_multisort()这个函数.array_multisort() 函数对多个数组或多维数组进行排序. 参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行

  • PHP array_multisort() 函数的深入解析

    一.先看最简单的情况.有两个数组:$arr1 = array(1,9,5);$arr2 = array(6,2,4);array_multisort($arr1,$arr2);print_r($arr1); // 得到的顺序是1,5,9print_r($arr2); // 得到的顺序是6,4,2我估计两个数组的值自始至终都是对应着的:1对应6,9对应2,5对应4.我们再加多一个数组看看会怎样:$arr1 = array(1,9,5);$arr2 = array(6,2,4);$arr3 = ar

随机推荐