<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:第四章——数组中的排序函数的更多相关文章

  1. 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具

    计算机图形学 opengl版本 第三版------胡事民 第四章  图形学中的向量工具 一   基础 1:向量分析和变换   两个工具  可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正 ...

  2. PHP-----PHP程序设计基础教程----第四章数组

    4.1 初识数组 4.1.1 什么是数组 数组是一个可以存储一组或者一系列数值的变量.在PHP中,数组中的元素分两部分,分别为键(Key)和值(Value).其中,“键”为元素的识别名称,也被称为数组 ...

  3. PHP:第三章——数组中的array_values

    例: <?php header("Content-Type:text/html;charset=utf-8"); //array_value(); //功能:返回数组中所有的 ...

  4. 精读JavaScript模式(四),数组,对象与函数的几种创建方式

    一.前言 放了个元旦,休息了三天,加上春运抢票一系列事情的冲击,我感觉我的心已经飞了.确实应该收收心,之前计划的学习任务也严重脱节了:我恨不得打死我自己. 在上篇博客中,笔记记录到了关于构造函数方面的 ...

  5. oracle中分组排序函数用法 - 转

    项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...

  6. PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析

    sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于 ...

  7. 【PHP】PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析

    php编程中有时候会需要用上排序,在这里简单地整理一下集中sort的区别,方便查询 sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort ...

  8. PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析(转)

    sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于 ...

  9. 数组中的reduce 函数理解

    第一次见到reduce 是在js 的高级程序设计中,它的意思是把一个数组减少为一个数,举的例子是数组中元素的求和.它接受一个函数作为参数,函数又有两个参数,一个是prev, 前一个值,一个是next, ...

随机推荐

  1. 20145101《Java程序设计》第一周学习总结

    20145101 <Java程序设计>第1周学习总结 教材学习内容总结 开学的第一周,通过课上老师的介绍和课下阅读教材我简单的了解java的发展历程,了解了JVM.JRE.JDK分别是什么 ...

  2. 20145205 武钰 《网络对抗》Exp8 Web基础

    一点题外话 本次实验我三号完成的,由于一些原因吧,一直没发博客,拖到了现在,这里说就是评判一下自己的懒惰. 实验后问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成 ...

  3. 不明原因报错集中处理:Undefined

    1, NSGenericException错误 Terminating app due to uncaught exception 'NSGenericException', reason: '*** ...

  4. IOS项目中的细节处理,如更改状态栏等等

    一,状态栏更改为白色 1 在info.plist中添加一个字段:view controller -base status bar 为NO 2 在需要改变状态栏颜色的ViewController中在Vi ...

  5. C++for的几种方式

    #include <algorithm> #include <vector> ////////////////////////////////////////////// , ...

  6. Android Studio Design界面不显示layout控件的解决方法

    发现更改了 layout里面的xml文件后  切换到design后,没有显示控件 解决方法 解决办法: 在 res/values/styles.xml 文件中  将原有的 前面添加 Base. The ...

  7. java 类构造器中加入有参构造器及调用顺序【思路】

    package com.ykmimi.new1; /** * * @author deadzq * */ public class AnyThing { public AnyThing() { thi ...

  8. codeforces 251 div2 C. Devu and Partitioning of the Array 模拟

    C. Devu and Partitioning of the Array time limit per test 1 second memory limit per test 256 megabyt ...

  9. listener TNS-01189 问题

    -- 启动监听,提示已经启动. [oracle@sh ~]$ lsnrctl start LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 0 ...

  10. MKAnnotationView和MKPinAnnotationView的区别

    如果想创建以静态图片作为大头针图片的话,可以通过创建MKAnnotationView是实例.如果想使用apple自带的大头针则创建MKPinAnnotationView