PHP排序之二维数组的按照字母排序方法,
在实际开发还是非常有用的,有需要的拿去,
http://lab.wehefei.com
<?
php
/* *
* 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 ;
}
$ArgCount = func_num_args ();
for ( $I = 1 ; $I < $ArgCount ; $I ++ )
{
$Arg = func_get_arg ( $I );
if ( ! eregi ( " SORT " , $Arg ))
{
$KeyNameList [] = $Arg ;
$SortRule [] = ' $ ' . $Arg ;
}
else
{
$SortRule [] = $Arg ;
}
}
foreach ( $ArrayData AS $Key => $Info )
{
foreach ( $KeyNameList AS $KeyName )
{
${ $KeyName }[ $Key ] = $Info [ $KeyName ];
}
}
$EvalString = ' array_multisort( ' . join ( " , " , $SortRule ) . ' ,$ArrayData); ' ;
eval ( $EvalString );
return $ArrayData ;
}
// ################# 示例 #################
$arr = array (
array (
' name ' => ' 学习 ' ,
' size ' => ' 1235 ' ,
' type ' => ' jpe ' ,
' time ' => ' 1921-11-13 ' ,
' class ' => ' D ' ,
) ,
array (
' name ' => ' 中国功夫 ' ,
' size ' => ' 153 ' ,
' type ' => ' jpe ' ,
' time ' => ' 2005-11-13 ' ,
' class ' => ' J ' ,
) ,
array (
' name ' => ' 编程 ' ,
' size ' => ' 35 ' ,
' type ' => ' gif ' ,
' time ' => ' 1997-11-13 ' ,
' class ' => ' A ' ,
) ,
array (
' name ' => ' 中国功夫 ' ,
' size ' => ' 65 ' ,
' type ' => ' jpe ' ,
' time ' => ' 1925-02-13 ' ,
' class ' => ' D ' ,
) ,
array (
' name ' => ' 中国功夫 ' ,
' size ' => ' 5 ' ,
' type ' => ' icon ' ,
' time ' => ' 1967-12-13 ' ,
' class ' => ' C ' ,
) ,
);
print_r ( $arr );
// 注意:按照数字方式排序时 153 比 65 小
$temp = sysSortArray( $arr , " class " , " SORT_ASC " , " type " , " SORT_DESC " , " size " , " SORT_ASC " , " SORT_STRING " );
echo " <pre> " ;
print_r ( $temp );
?>
/* *
* 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 ;
}
$ArgCount = func_num_args ();
for ( $I = 1 ; $I < $ArgCount ; $I ++ )
{
$Arg = func_get_arg ( $I );
if ( ! eregi ( " SORT " , $Arg ))
{
$KeyNameList [] = $Arg ;
$SortRule [] = ' $ ' . $Arg ;
}
else
{
$SortRule [] = $Arg ;
}
}
foreach ( $ArrayData AS $Key => $Info )
{
foreach ( $KeyNameList AS $KeyName )
{
${ $KeyName }[ $Key ] = $Info [ $KeyName ];
}
}
$EvalString = ' array_multisort( ' . join ( " , " , $SortRule ) . ' ,$ArrayData); ' ;
eval ( $EvalString );
return $ArrayData ;
}
// ################# 示例 #################
$arr = array (
array (
' name ' => ' 学习 ' ,
' size ' => ' 1235 ' ,
' type ' => ' jpe ' ,
' time ' => ' 1921-11-13 ' ,
' class ' => ' D ' ,
) ,
array (
' name ' => ' 中国功夫 ' ,
' size ' => ' 153 ' ,
' type ' => ' jpe ' ,
' time ' => ' 2005-11-13 ' ,
' class ' => ' J ' ,
) ,
array (
' name ' => ' 编程 ' ,
' size ' => ' 35 ' ,
' type ' => ' gif ' ,
' time ' => ' 1997-11-13 ' ,
' class ' => ' A ' ,
) ,
array (
' name ' => ' 中国功夫 ' ,
' size ' => ' 65 ' ,
' type ' => ' jpe ' ,
' time ' => ' 1925-02-13 ' ,
' class ' => ' D ' ,
) ,
array (
' name ' => ' 中国功夫 ' ,
' size ' => ' 5 ' ,
' type ' => ' icon ' ,
' time ' => ' 1967-12-13 ' ,
' class ' => ' C ' ,
) ,
);
print_r ( $arr );
// 注意:按照数字方式排序时 153 比 65 小
$temp = sysSortArray( $arr , " class " , " SORT_ASC " , " type " , " SORT_DESC " , " size " , " SORT_ASC " , " SORT_STRING " );
echo " <pre> " ;
print_r ( $temp );
?>
本文来源:
来源:合肥网产品中心 http://lab.wehefei.com 更多欢迎关注下。