PHP Array custom sort: Php two-dimensional array custom sort
Last Update:2017-02-28
Source: Internet
Author: User
<?php
Custom sort for two-dimensional arrays
function Array_sort ($arr, $keys, $type) {
$keysvalue =array ();
$i = 0;
foreach ($arr as $key => $val) {
$val [$keys] = Str_replace ("-", "", $val [$keys]);
$val [$keys] = Str_replace ("", "", $val [$keys]);
$val [$keys] = Str_replace (":", "", $val [$keys]);
$keysvalue [] = $val [$keys];
}
Asort ($keysvalue); Key value Ordering
Reset ($keysvalue); The pointer points back to the array first
foreach ($keysvalue as $key => $vals) {
$keysort [] = $key;
}
$new _array = Array ();
if ($type!= "ASC") {
For ($ii =count ($keysort)-1; $ii >=0; $ii-) {
$new _array[] = $arr [$keysort [$ii]];
}
}else{
for ($ii =0; $ii <count ($keysort); $ii + +) {
$new _array[] = $arr [$keysort [$ii]];
}
}
return $new _array;
}
$arr = Array (
Array
' Name ' => ' learning ',
' Size ' => ' 1235 ',
' Type ' => ' JPE ',
' Time ' => ' 1921-11-13 ',
' class ' => ' DD ',
),
Array
' Name ' => ' Chinese Kung Fu ',
' Size ' => ' 153 ',
' Type ' => ' JPE ',
' Time ' => ' 2005-11-13 ',
' Class ' => ' JJ ',
),
Array
' Name ' => ' programming ',
' Size ' => ' 35 ',
' Type ' => ' gif ',
' Time ' => ' 1997-11-13 ',
' class ' => ' DD ',
),
Array
' Name ' => ' Chinese Kung Fu ',
' Size ' => ' 65 ',
' Type ' => ' JPE ',
' Time ' => ' 1925-02-13 ',
' class ' => ' yy ',
),
);
Echo ' <pre> ';
Print_r (Array_sort ($arr, ' size ', ' ASC '));
function Syssortarray ($ArrayData, $KeyName 1, $SortOrder 1 = "Sort_asc", $SortType 1 = "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;
}
}
foreach ($ArrayData as $Key => $Info)
{
foreach ($KeyNameList as $KeyName)
{
${$KeyName}[$Key] = $Info [$KeyName];
}
}
$EvalString = ' Array_multisort ('. Join (",", $SortRule). ', $ArrayData); ';
eval ($EvalString);
return $ArrayData;
}
?> This article links http://www.cxybl.com/html/wlbc/Php/20130326/37392.html