Um mehrdimensionale Arrays zu sortieren, besteht der allgemeine Ansatz darin,
1 die sortierten Daten zu erhalten und sie in das Array $arrSort einzufügen. Der Schlüsselindex ist der Index des zu sortierenden Arrays, um die Eindeutigkeit sicherzustellen
2 Verwenden Sie die Sortierfunktion sort usw., um $arrSort zu sortieren. 3 Durchlaufen Sie $arrSort, ermitteln Sie die Daten des mehrdimensionalen Arrays gemäß seinem Index und rekonstruieren Sie das sortierte mehrdimensionale Array 🎜>Der Code lautet wie folgt:
Array
[0] => Array
(
[link] => test
[name] => test.rpm
[Typ] => Datei
[Größe] => 988,9 KB
[mtime] => 1185160178)
....
)
Ich habe eine Sortierfunktion gefunden im Internet vor langer Zeit. Effizient, aber sehr praktisch
_array_sort($arrFile, 1, 1);// Nach dem Namensfeld sortieren
_array_sort ($arrFile, 3, 1);//Nach Größe Feldsortierung/*
@records Zu sortierendes Array
@field Zu sortierendes Feld, beachten Sie, ob es eine Zahl ist
@ Vorwärts- oder Rückwärtsreihenfolge
*/
function _array_sort( $records, $field, $reverse, $defaultSortField = 0)
{
$uniqueSortId = 0;
$hash = array( );
$sortedRecords = array();
$indexedArray = array();
foreach( $records as $record)
{
$uniqueSortId++;
$recordStr = implode("|", $record)."|".$uniqueSortId;
}
$primarySortIndex = count($record);
$records = $recordArray;
foreach($records as $record)
$hash[$record[$primarySortIndex]] = $record[$field];
uasort($hash, "strnatcasecmp");
$hash = array_reverse($hash, true);
$valueCount = array_count_values($hash);
foreach($hash as $primaryKey => $value)
{
$indexedArray[] = $primaryKey;
foreach($hash as $primaryKey => $value)
{
$i++;
if($valueCount[$value] > 1)
foreach($records as $record)
{
if($primaryKey == $record[$ PrimarySortIndex])
{
$tempArr[$record[ $defaultSortField]."__".$i] = $record;
}
}
$index = array_search($primaryKey, $indexedArray);
if(($i == count($records)) || ($value != $hash[$indexedArray[$index+1]] ))
{
uksort($tempArr, "strnatcasecmp ");
$tempArr = array_reverse($tempArr);
foreach( $tempArr as $newRecs)
{
$sortedRecords [ ] = $newRecs;
$tempArr = array();
}
{
foreach($records as $record)
{
if($primaryKey == $record[$primarySortIndex])
$sortedRecords[] = $record;
break;
}
}
}
return $sortedRecords;
}
II Verwenden Sie array_map und array_mutisort, um
array_mutisor zu sortieren Führen Sie auch eine sekundäre oder tertiäre Sortierung basierend auf mehreren Werten durch. Eine Funktion kann nicht verglichen werden.
Der Code lautet wie folgt:
Verwenden Sie array_map, um das zu sortierende Array abzurufen
$arrField = array_map(create_function('$n', 'return $n["size" ];'), $arrFile);
III Abschlusstest
Mit 188 Daten Das Array wird 50 Mal getestet, um den Durchschnitt zu ermitteln
0,04269016 Name
0,04267142 Größe
0,001249 Name
0,00083924 Größe
Vielen Dank fürs Lesen. Wenn Sie weitere verwandte Inhalte erhalten möchten, achten Sie bitte auf die chinesische PHP-Website (www.php.cn)!