php 数组排序 array_multisort与uasort的区别
php 数组排序 array_multisort与uasort的区别
其实,简单的说两者的最重要的区别: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[,mixed...[,array...]]])
说明:
Array_multisort()能用来立刻将数个数组或多样尺寸(multi-dimensional)数组排序。
输入的数组被看作是表格(table)的栏位,依照列(rows)将它排序,这类似于SQL ORDER BY clause的功能,第一个数组是首要(primary)排序的数组,此数组中的列(值)以下一个输入的数组对照相同的排序。
这个函数的引数结构是个独特(unusual)位元,但是是可变通的。第一个引数必定是个数组,随后的引数可以是个数组或是下个列表的排序旗标(flag)之一。
排序顺序旗标:
SORT_ASC-排序成上升的顺序
SORT_DESC-排序成下降的顺序
排序型态旗标:
SORT_REGULAR-正常的比较项目
SORT_NUMERIC-以数字比较项目
SORT_STRING-看作是字符串来比较项目
不能使用二个相同型态的旗标指定在各各数组之后,排序的旗标指定在数组引数的后面,只对此数组起作用,其它的将重设为预设的SORT_ASC和SORT_REGULAR在数组引数之后。
成功则传回true,失败则传回false。
*************函数定义和语法*************
uasort()
函数使用用户自定义的比较函数对数组排序,并保持索引关联(不为元素分配新的键)。
如果成功则返回TRUE,否则返回FALSE。
该函数主要用于对那些单元顺序很重要的结合数组进行排序。
语法
uasort(array,sorttype)参数描述
array必需。规定要排序的数组。
function必需。用户自定义的函数。
函数必须设计为返回-1,0,或1,并应该接受两个供比较的参数,同时以类似下面这样的方式来工作:
如果a=b,返回0
如果a<b,返回1
如果a>b,返回-1
PHP uasort()函数
定义和用法
uasort()函数使用用户自定义的比较函数对数组排序,并保持索引关联(不为元素分配新的键)。
如果成功则返回TRUE,否则返回FALSE。
该函数主要用于对那些单元顺序很重要的结合数组进行排序。
语法
uasort(array,sorttype)参数描述
array必需。规定要排序的数组。
function必需。用户自定义的函数。
函数必须设计为返回-1,0,或1,并应该接受两个供比较的参数,同时以类似下面这样的方式来工作:
如果a=b,返回0
如果a<b,返回1
如果a>b,返回-1
例子
复制代码代码如下:
<?php
function my_sort($a,$b)
{
if($a==$b)return0;
return($a>$b)?-1:1;
}
$people=array("Swanson"=>"Joe",
"Griffin"=>"Peter","Quagmire"=>"Glenn",
"swanson"=>"joe","griffin"=>"peter",
"quagmire"=>"glenn");
uasort($people,"my_sort");
print_r($people);
?>
输出:
复制代码代码如下:
Array
(
[griffin]=>peter
[swanson]=>joe
[quagmire]=>glenn
[Griffin]=>Peter
[Swanson]=>Joe
[Quagmire]=>Glenn
)