PHP:第四章——数组中的排序函数
<pre>
<?php
header("Content-Type:text/html;charset=utf-8");
//1)
/*sort - 对数组进行升序排序,返回新排好序的数组
原形:bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )*/
/*$b = array ( 0 => 'x', 1 => 'y', 2 => 'd', 3 => 'l');
sort($b);//排序
print_r($b);//结果: Array ( [0] => d [1] => l [2] => x [3] => y )*/
/*
参数说明:
可选的第二个参数 sort_flags 可以用以下值改变排序的行为:
排序类型标记:
SORT_REGULAR - 正常比较单元(不改变类型)
SORT_NUMERIC - 单元被作为数字来比较
SORT_STRING - 单元被作为字符串来比较
SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。
SORT_NATURAL - 和 natsort() 类似对每个单元以"自然的顺序"对字符串进行排序。 PHP 5.4.0 中新增的。
SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串
*/
//例:
/*$a = array ( 'x', 'd', 'X');
sort($a, SORT_STRING|SORT_FLAG_CASE);
print_r($a); */
// X区分大小写时候小于 d, 在不区分大小写时候 d<X
//结果:Array ( [0] => d [1] => X [2] => x ) //2)
/*
rsort — 对数组逆向排序,是按降序排序,其他与sort等同
原形:bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
*/
//例:
/*$a = array ( 'x', 'y', 'd', 'l');
rsort($a);
print_r($a);//结果:Array ( [0] => y [1] => x [2] => l [3] => d )
*/ //3) asort与arsort - 经常保留原有的键值更有意义
/*$a = array (1=>168, 2=>58, 3=>99 );
asort($a);
print_r($a);
//输出:Array ( [2] => 58 [3] => 99 [1] => 168 )
//倒序用arsort($a) 即可得到:Array ( [1] => 168 [3] => 99 [2] => 58 ) */ //4)shuffle将数组打乱:
//功能:将数组打乱
//例:
/*$a = range (1,54); //54张牌用 54个编号描述
shuffle($a);
$i =0;
$k =0;
foreach($a as $v){
echo $v," ";
$i++;
if($i%17 == 0){
$k++;
echo ":玩家$k <br>------<br>";
}
}
*/ //5) array_rand 随机函数
/*$a = array('d','l','x','y');
$ky=array_rand($a); //注意他返回的是 键名,或者是包含键名的数组
var_dump($a[$ky]);*/ /*$a = array('d','l','x','y');
$ky=array_rand($a,2); //取两个随机键名
var_dump($ky);*/ //6)array_multisort()对多个数组或多维数组进行排序
//例:
/*$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);
var_dump($ar1);
var_dump($ar2);*/
//输出如下
/*array (size=4)
0 => int 0
1 => int 10
2 => int 100
3 => int 100 array (size=4)
0 => int 4
1 => int 1
2 => int 2
3 => int 3*/
//例:
/*$ar = array(
array("10", 11, 100, 100, "a"),
array( 1, 2, "2", 3, 1)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING,$ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);*/ //6)natsort 自然排序
/*$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
asort($array1);
print_r($array1);
natsort($array2);
print_r($array2); */
//输出:
/*Array
(
[3] => img1.png
[1] => img10.png
[0] => img12.png
[2] => img2.png
)*/
/*Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)*/ //7) natcasesort 自然排序不区分大小写 //8) usort - 使用用户自定义的比较函数对数组中的值进行排序
/*function cmp($a, $b){
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "cmp");
foreach ($a as $key => $value) {
echo "$key: $value\n";
}*/
//输出:
/*0: 1
1: 2
2: 3
3: 5
4: 6*/
?>
<pre>
<?php
header("Content-Type:text/html;charset=utf-8");
/*知识点一:数组排序函数应用场景
应用场景:经常从数据库读出的数据,会保存到数组中,对这些数据排序就非常实用。
例如:按产品销量、人气、价格、等进行从高到低或从低到高的排序。 知识点二:数组排序
数组函数中有基于键来排序也有基于值来排序的 ,以下几个问题也很值得注意。
1) 排序之后键和值之间的关联关系是否能够保持, 是指排序之后数组的键可能 会被重置为数字型的(0,1,2 ...)。
2) 排序的顺序有:字母表顺序, 由低到高(升序),由高到低(降序),
数字排序,自然排序,随机顺序或者用户自定义排序。
3) 注意:下列的所有排序函数都是直接作用于数组本身, 而不是返回一个新的有序的数组。
4) 以下函数对于数组中相等的元素,它们在排序后的顺序是未定义的。 (也即相等元素之间的顺序是不稳定的)。 知识点三:按值排序的函数
sort() 由低到高,重新索引(所有从新索引的原键都丢失,下面不在重复说明)
rsort() 由高到低,重新索引
asort() 由低到高,保留原来键值对关系
arsort() 由高到低,保留原来键值对关系
usort() 由用户定义,重新索引
uasort() 由用户定义,保留原来键值对关系
shuffle() 随机相关函数有array_rand()
natsort() 自然排序 natcasesort()
natcasesort() 自然排序,大小写不敏感 natsort()
array_multisort() 键值关联的保持,数字类型的不保持 第一个数组或者由选项指定 知识点四:按键排序的函数,都能够保留键值对应关系
krsort() 由高到低
ksort() 由低到高
uksort() 由用户定义 uasort() 说明:以上函数记忆方法
sort 排序
r代表倒序, reverse 的简写
k代表键, key 的简写
a代表管理, association 简写
u代表用户, user 的简写
nat自然排序, natural 自然的简写
shuffle:洗牌,随机*/
?>
PHP:第四章——数组中的排序函数的更多相关文章
- 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具
计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具 一 基础 1:向量分析和变换 两个工具 可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正 ...
- PHP-----PHP程序设计基础教程----第四章数组
4.1 初识数组 4.1.1 什么是数组 数组是一个可以存储一组或者一系列数值的变量.在PHP中,数组中的元素分两部分,分别为键(Key)和值(Value).其中,“键”为元素的识别名称,也被称为数组 ...
- PHP:第三章——数组中的array_values
例: <?php header("Content-Type:text/html;charset=utf-8"); //array_value(); //功能:返回数组中所有的 ...
- 精读JavaScript模式(四),数组,对象与函数的几种创建方式
一.前言 放了个元旦,休息了三天,加上春运抢票一系列事情的冲击,我感觉我的心已经飞了.确实应该收收心,之前计划的学习任务也严重脱节了:我恨不得打死我自己. 在上篇博客中,笔记记录到了关于构造函数方面的 ...
- oracle中分组排序函数用法 - 转
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
- PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于 ...
- 【PHP】PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
php编程中有时候会需要用上排序,在这里简单地整理一下集中sort的区别,方便查询 sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort ...
- PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析(转)
sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于 ...
- 数组中的reduce 函数理解
第一次见到reduce 是在js 的高级程序设计中,它的意思是把一个数组减少为一个数,举的例子是数组中元素的求和.它接受一个函数作为参数,函数又有两个参数,一个是prev, 前一个值,一个是next, ...
随机推荐
- 经典模块化的前端框架:layer
官网:http://layer.layui.com/ 官网论坛里有许多后台界面可参考下载.其中后台管理界面和弹窗功能都是比较常用的.
- 20145204《网络对抗》逆向及bof基础实践
20145204<网络对抗>逆向及bof基础实践 实践目的说明 实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...
- SpringCloud请求响应数据转换(一)
异常现象 近期做Spring Cloud项目,工程中对Controller添加ResponseBodyAdvice切面,在切片中将返回的结果封装到ResultMessage(自定义结构),但在Cont ...
- How can I list all foreign keys referencing a given table in SQL Server?
How can I list all foreign keys referencing a given table in SQL Server? how to check if columns in ...
- java的事务类型及定义
转载: 什么是事务: 首先,说说什么事务.我认为事务,就是一组操作数据库的动作集合. 事务是现代数据库理论中的核心概念之一.如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务. ...
- NYOJ 116 士兵杀敌(二)(二叉索引树)
http://acm.nyist.net/JudgeOnline/problem.php?pid=116 题意: 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的 ...
- UVa 1631 密码锁
https://vjudge.net/problem/UVA-1631 题意: 有一个n位密码锁,每位都是0~9,可以循环旋转.每次可以让1~3个相邻数字同时往上或者往下转一格.输入初始状态和终止状态 ...
- Codeforces Round #303 (Div. 2)E. Paths and Trees 最短路
E. Paths and Trees time limit per test 3 seconds memory limit per test 256 megabytes input standard ...
- Qt5_加载DLL
1.QLibrary 加载普通 DLL //写清楚库的路径,如果放在当前工程的目录下,路径为./Oracle.so QLibrary *libOCI = new QLibrary("F:\\ ...
- javascript变量声明及作用域总结
javascript变量声明及作用域总结 一.总结 一句话总结:还是得好好看书,光看视频是不得行的,浅学无用,要相互印证,要真正理解才有用,比如<Javascript权威指南> 书 1.j ...