php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort
对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下:
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 | 可选。规定输入的数组。 |
参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
- SORT_ASC - 默认,按升序排列。(A-Z)
- SORT_DESC - 按降序排列。(Z-A)
随后可以指定排序的类型:
- SORT_REGULAR - 默认。将每一项按常规顺序排列。
- SORT_NUMERIC - 将每一项按数字顺序排列。
- SORT_STRING - 将每一项按字母顺序排列
<?php function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){
if(is_array($arrays)){
foreach ($arrays as $array){
if(is_array($array)){
$key_arrays[] = $array[$sort_key];
}else{
return false;
}
}
}else{
return false;
}
array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
return $arrays;
} $person = array(
array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180),
array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150),
array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156),
array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190),
array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200),
array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110),
array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170)
); var_dump($person); $person = my_sort($person,'name',SORT_ASC,SORT_STRING); var_dump($person); $person = my_sort($person,'weight'); var_dump($person);
?>
结果如下:
array (size=7)
0 =>
array (size=4)
'id' => int 1
'name' => string 'fj' (length=2)
'weight' => int 100
'height' => int 180
1 =>
array (size=4)
'id' => int 2
'name' => string 'tom' (length=3)
'weight' => int 53
'height' => int 150
2 =>
array (size=4)
'id' => int 3
'name' => string 'jerry' (length=5)
'weight' => int 120
'height' => int 156
3 =>
array (size=4)
'id' => int 4
'name' => string 'bill' (length=4)
'weight' => int 110
'height' => int 190
4 =>
array (size=4)
'id' => int 5
'name' => string 'linken' (length=6)
'weight' => int 80
'height' => int 200
5 =>
array (size=4)
'id' => int 6
'name' => string 'madana' (length=6)
'weight' => int 95
'height' => int 110
6 =>
array (size=4)
'id' => int 7
'name' => string 'jordan' (length=6)
'weight' => int 70
'height' => int 170
array (size=7)
0 =>
array (size=4)
'id' => int 4
'name' => string 'bill' (length=4)
'weight' => int 110
'height' => int 190
1 =>
array (size=4)
'id' => int 1
'name' => string 'fj' (length=2)
'weight' => int 100
'height' => int 180
2 =>
array (size=4)
'id' => int 3
'name' => string 'jerry' (length=5)
'weight' => int 120
'height' => int 156
3 =>
array (size=4)
'id' => int 7
'name' => string 'jordan' (length=6)
'weight' => int 70
'height' => int 170
4 =>
array (size=4)
'id' => int 5
'name' => string 'linken' (length=6)
'weight' => int 80
'height' => int 200
5 =>
array (size=4)
'id' => int 6
'name' => string 'madana' (length=6)
'weight' => int 95
'height' => int 110
6 =>
array (size=4)
'id' => int 2
'name' => string 'tom' (length=3)
'weight' => int 53
'height' => int 150
array (size=7)
0 =>
array (size=4)
'id' => int 2
'name' => string 'tom' (length=3)
'weight' => int 53
'height' => int 150
1 =>
array (size=4)
'id' => int 7
'name' => string 'jordan' (length=6)
'weight' => int 70
'height' => int 170
2 =>
array (size=4)
'id' => int 5
'name' => string 'linken' (length=6)
'weight' => int 80
'height' => int 200
3 =>
array (size=4)
'id' => int 6
'name' => string 'madana' (length=6)
'weight' => int 95
'height' => int 110
4 =>
array (size=4)
'id' => int 1
'name' => string 'fj' (length=2)
'weight' => int 100
'height' => int 180
5 =>
array (size=4)
'id' => int 4
'name' => string 'bill' (length=4)
'weight' => int 110
'height' => int 190
6 =>
array (size=4)
'id' => int 3
'name' => string 'jerry' (length=5)
'weight' => int 120
'height' => int 156
php基础篇-二维数组排序 array_multisort的更多相关文章
- php实现二维数组排序array_multisort($ages, SORT_DESC, $home)函数
1.sql查询排序参数是order by,那么php进行排序呢 可以参考array_multisrot函数 //php进行二维数组排序 -xzz1009 foreach($home as $home) ...
- PHP array_multisort() 函数详解 及 二维数组排序(模拟数据表记录按字段排序)
一.先看最简单的情况. 有两个数组: $arr1 = array(1, 9, 5); $arr2 = array(6, 2, 4); array_multisort($arr1, $arr2); pr ...
- PHP array_multisort实现二维数组排序
PHP array_multisort实现二维数组排序 参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值 ...
- PHP 二维数组排序保持键名不变
对二维数组指定的键名排序,首先大家想到的是array_multisort函数,关于array_multisort的用法我之前也写了一篇废话不多言,我们看个实例: <?php $data = ar ...
- PHP二维数组排序(list_order)
/** * 对二维数组进行排序 * 模拟 数据表记录按字段排序 * * <code> * @list_order($list, $get['orderKey'], $get['orderT ...
- PHP二维数组排序(感谢滔哥)
滔哥原创 /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\|| ...
- PHP二维数组排序(感谢滔哥lvtao.net)
滔哥原创 /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\|| ...
- PHP 多维数组排序 array_multisort()
用PHP自带array_multisort函数排序 <?php $data = array(); $data[] = array('volume' => 67, 'edition' ...
- PHP二维数组排序研究
前几天在项目中碰到了一个问题,在做商城的时候,要对一个店铺里所有商品进行价格排序,而且每一种商品都拥有多个规格,要取到所有商品中所有规格的最低价和最高价,发现PHP有很友好的函数帮助我们进行筛选. 使 ...
随机推荐
- Rock-Paper-Scissors Tournament[HDU1148]
Rock-Paper-Scissors TournamentTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- BZOJ1841 : 蚂蚁搬家
树分治,对于每个分治结构,维护两棵线段树. 第一棵按dfs序维护所有点到重心的距离,第二棵维护每个分支的最长链. 那么当前结构对答案的贡献就是第二棵线段树的最大值$+$次大值. 对于操作$0$,如果是 ...
- BZOJ2285 : [Sdoi2011]保密
首先通过分数规划,二分答案$mid$,将每条边边权重置为$t-mid\times s$,用DP求出终点到该点的最短路,若非正则可以更小. 如此可以计算出每个出入口的最小危险值,然后把奇点放在$S$,偶 ...
- hive :MetaException(message:Version information not found in metastore. )
MetaException(message:Version information not found in metastore. ) Hive now records the schema vers ...
- POJ3177 & 求边双联通分量
题意: 给一张无向图,求加多少边使原图任意两点边双联通. SOL: 一个不会写边双点双强联通的傻逼. 一个结论:把一棵树变成满足条件的图需要加的边使入度为1的点数+1除以2.------>就是树 ...
- Codeforces Round #215 (Div. 2) A. Sereja and Coat Rack
#include <iostream> #include <vector> #include <algorithm> using namespace std; in ...
- BZOJ4519: [Cqoi2016]不同的最小割
Description 学过图论的同学都知道最小割的概念:对于一个图,某个对图中结点的划分将图中所有结点分成 两个部分,如果结点s,t不在同一个部分中,则称这个划分是关于s,t的割.对于带权图来说,将 ...
- 51nod算法马拉松12
A 第K大区间 不妨考虑二分答案x,则问题转化成计算有多少个区间满足众数出现的次数>=x. 那么这个问题我们使用滑动窗口,枚举右端点,则左端点肯定单调递增,然后维护一个简单的数组就能资瓷添加元素 ...
- Notification Once
Notification Once 前段时间整理项目中的AppDelegate,发现很多写在- application:didFinishLaunchingWithOptions:中的代码都只是为了在 ...
- 关于Autoit上传文件的问题
Autoit上传文件需要安装两个软件: 使用这个做文件上传时:在代码中需要添加的代码如下: Runtime.getRuntime().exec("d:/zhpg.exe"); D盘 ...