PHP中二维数组的中犯的新华与

2012 年 10 月 19 日5430

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

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

<?php

// 说明:PHP中二维数组中犯的新华与

// 整理:http://http://www.zjjv.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 <wwccss@263.net>

* @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

);

?>

height=14 src="/wp-content/uploads/20121019/1840030.gif" width=14

border=0>

【责编:anna】

0 0