欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP中二维数组的排序方法

程序员文章站 2024-01-15 09:54:52
...

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 本文介绍的是从 BugFree 摘录来的二维数组排序函数,可以实现类似 MySQL 的 ORDER BY 效果,当数组不是从数据库取得时会有特殊应用。 ?php // 说明:PHP中二维数组的排序方法 // 整理:http://www.xk

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

本文介绍的是从 BugFree 摘录来的二维数组排序函数,可以实现类似 MySQL 的 ORDER BY 效果,当数组不是从数据库取得时会有特殊应用。

// 说明:PHP中二维数组的排序方法

// 整理:http://www.xker.com

/**

* @package BugFree

* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $

*

*

* Sort an two-dimension array by some level two items use array_multisort() function.

*

* sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)

* @author Chunsheng Wang

* @param array $ArrayData the array to sort.

* @param string $KeyName1 the first item to sort by.

* @param string $SortOrder1 the order to sort by("SORT_ASC"|"SORT_DESC")

* @param string $SortType1 the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")

* @return array sorted array.

*/

function sysSortArray

$ArrayData,

$KeyName1,

$SortOrder1 =

"SORT_ASC",

$SortType1 =

"SORT_REGULAR"

{

if

(!

is_array

$ArrayData

{

return

$ArrayData;

}

// Get args number.

$ArgCount =

func_num_args

);

// Get keys to sort by and put them to SortRule array.

for

$I =

1;

$I

$ArgCount;

$I ++

{

$Arg =

func_get_arg

$I

);

if

(!

eregi

"SORT",

$Arg

{

$KeyNameList

[

] =

$Arg;

$SortRule

[

] =

'$'.

$Arg;

}

else

{

$SortRule

[

] =

$Arg;

}

}

// Get the values according to the keys and put them to array.

foreach

$ArrayData

AS

$Key =>

$Info

{

foreach

$KeyNameList

AS

$KeyName

{

$

{

$KeyName

}

[

$Key

] =

$Info

[

$KeyName

];

}

}

// Create the eval string and eval it.

$EvalString =

'array_multisort('.

join

",",

$SortRule

)。

',$ArrayData);';

eval

$EvalString

);

return

$ArrayData;

}

//################# 示例 #################

$arr =

array

array

'name' =>

'学习',

'size' =>

'1235',

'type' =>

'jpe',

'time' =>

'1921-11-13',

'class' =>

'dd',

),

array

'name' =>

'中国功夫',

'size' =>

'153',

'type' =>

'jpe',

'time' =>

'2005-11-13',

'class' =>

'jj',

),

array

'name' =>

'编程',

'size' =>

'35',

'type' =>

'gif',

'time' =>

'1997-11-13',

'class' =>

'dd',

),

array

'name' =>

'中国功夫',

'size' =>

'65',

'type' =>

'jpe',

'time' =>

'1925-02-13',

'class' =>

'yy',

),

array

'name' =>

'中国功夫',

'size' =>

'5',

'type' =>

'icon',

'time' =>

'1967-12-13',

'class' =>

'rr',

),

);

print_r

$arr

);

//注意:按照数字方式排序时 153 比 65 小

$temp = sysSortArray

$arr,

"name",

"SORT_ASC",

"type",

"SORT_DESC",

"size",

"SORT_ASC",

"SORT_STRING"

);

print_r

$temp

);

?>

PHP中二维数组的排序方法