PHP 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 - 将每一项按字母顺序排列。

实例代码

$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.前边的数组如遇相等的元素则比较后边的数组

时间: 2024-11-09 02:03:10

PHP array_multisort()的使用札记的相关文章

PHP Warning: array_multisort(): Array sizes are inconsistent

array_multisort() 函数返回排序数组.您可以输入一个或多个数组.函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序. 遇到这报错是两个数组对比不一致导致的, 如果是一维数组与二维数组进行排序可以用以下方法解决: 使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列.具体代码如下: 复制代码代码如下: $ages = array();foreach ($users as $user) {    $ages[]

php 排序数组array_multisort

$arr[] = array('name'=>'a','flag'=>1); $arr[] = array('name'=>'b','flag'=>2); $arr[] = array('name'=>'a','flag'=>1); $flag=array(); foreach($arr as $arr2){     $flag[]=$arr2["flag"];     } array_multisort($flag, SORT_ASC, $arr)

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); $arr2 = array(6,2,4);

array_multisort 关联(string)键名保持不变,但数字键名会被重新索引。

$array = [ '2' => [ 'title' => 'Flower', 'order' => 3 ], '3' => [ 'title' => 'Rock', 'order' => 1 ], '4' => [ 'title' => 'Grass', 'order' => 2 ] ]; $keys = array_keys($array); array_multisort( array_column($array, 'order'), SORT

[BBS]搭建开源论坛之JForum安装使用札记

本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/47761303 目录 目录 BBS搭建开源论坛之JForum安装使用札记 源码下载 在myeclipse中搭建开发环境 创建数据库 启动web服务 简易二次修改 [BBS]搭建开源论坛之JForum安装使用札记 本文使用开源BBS源码jforum2.1.9版本搭建二次开发初始环境,开发环境为myeclipse2015/mysql/jdk1.8/tom

Android实习札记(5)---Fragment之底部导航栏的实现

Android实习札记(5)---Fragment之底部导航栏的实现 --转载请注明出处:coder-pig 在Part 4我们回顾了一下Fragment的基本概念,在本节中我们就来学习Fragment应用的简单例子吧! 就是使用Fragment来实现简单的底部导航栏,先贴下效果图: 看上去很简单,实现起来也是很简单的哈!那么接着下来就看下实现的流程图吧: 实现流程图: 看完流程图是不是有大概的思路了,那么接着就开始代码的编写吧: 代码实现: ①先写布局,布局的话很简单,一个FrameLayou

【读书札记】建立第一个Web项目

安装配置好jdk,tomcat,我用的版本是7.0.54,我放在C:\server\apache-tomcat-7.0.54下, CATALINA_BASE:C:\server\apache-tomcat-7.0.54 CATALINA_HOME:C:\server\apache-tomcat-7.0.54 也可以在Path下面添加配置  ;C:\server\apache-tomcat-7.0.54\bin ,这样就可以在cmd下直接输入startup启动服务器了. 背景:运用web容器tom

Advanced Installer 11.9基于IIS打包札记(For MySQL)

原文:Advanced Installer 11.9基于IIS打包札记(For MySQL) Mysql免安装前期部署 下载绿色命令行版本的mysql,将其放入到发布的程序发布包内,执行Update批处理,输入自定义端口号,选一个不冲突的数字,比如3310: 运行scripts启动mysql服务 准备好数据库sql脚本,并且用navcat连接后新建一个空的数据库 打开命令行窗口,进入到mysql的bin目录 首先连接mysql,运行命令语句mysql -P3310 -uroot -p --def

array_multisort—对多个数组或多维数组进行排序

From: http://www.cnblogs.com/lwbqqyumidi/archive/2013/01/31/2887188.html PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的