Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des mehrdimensionalen PHP-Array-Sortierarrays

Detaillierte Erläuterung des mehrdimensionalen PHP-Array-Sortierarrays

jacklove
jackloveOriginal
2018-05-22 17:45:531906Durchsuche

In diesem Artikel wird die detaillierte Erklärung des mehrdimensionalen PHP-Array-Sortierarrays erläutert.

PHP-Array Array wird nach Feldern sortiert

/** 
* Sort array by filed and type, common utility method. 
* @param array $data
* @param string $sort_filed
* @param string $sort_type SORT_ASC or SORT_DESC 
*/
public function sortByOneField($data, $filed, $type) 
{ 
if (count($data) <= 0) { 
return $data;
} 
foreach ($data as $key => $value) { 
$temp[$key] = $value[$filed];
 
}
 
array_multisort($temp, $type, $data);
 
return $data;
 
}
   
PHP数组Array按二维排序,先按第一个字段排序,再按第二个字段排序
 
* Sort array by filed and type, common utility method.
 
* @param array $array
 
* @param string $filed1
 
* @param string $type1 SORT_ASC or SORT_DESC
 
* @param string $filed2
 
* @param string $type2 SORT_ASC or SORT_DESC
 
*/
 
public function sortByTwoFiled($data, $filed1, $type1, $filed2, $type2)
 
{
 
if (count($data) <= 0) {
 
return $data;
 
}
 
foreach ($data as $key => $value) {
 
$temp_array1[$key] = $value[$filed1];
 
$temp_array2[$key] = $value[$filed2];
 
}
 
array_multisort($temp_array1, $type1, $temp_array2, $type2, $data);
 
return $users;
 
}

sortMultiArray() unterstützt bis zu dreidimensionale Array-Sortierung, kann natürlich erweitert werden und implementiert benutzerdefinierte Methodenüberladung Sortierung mehrdimensionaler Zahlen, mehrdimensional bezieht sich hier auf mehrere Datenfelder.

Verwendung:

1. sortMultiArray($data, [‘score&#39; => SORT_DESC])
2. sortMultiArray($data, [‘score&#39; => SORT_DESC, ‘count&#39; => SORT_ASC])
3. sortMultiArray($data, [‘score&#39; => SORT_DESC, ‘count&#39; => SORT_ASC, ‘name&#39; => SORT_ASC])
/**
 
* Sort multi array by filed and type.
 
* @param data $array
 
* @param condition $array
 
*/
 
public function sortMultiArray(&$data, $condition)
 
{
 
if (count($data) <= 0 || empty($condition)) {
 
return $data;
 
}
 
$dimension = count($condition);
 
$fileds = array_keys($condition);
 
$types = array_values($condition);
 
switch ($dimension) {
 
case 1:
 
$data = $this->sort1Dimension($data, $fileds[0], $types[0]);
 
break;
 
case 2:
 
$data = $this->sort2Dimension($data, $fileds[0], $types[0], $fileds[1], $types[1]);
 
break;
 
default:
 
$data = $this->sort3Dimension($data, $fileds[0], $types[0], $fileds[1], $types[1], $fileds[2], $types[2]);
 
break;
 
}
 
return $data;
 
}
 
public function sort1Dimension(&$data, $filed, $type)
 
{
 
if (count($data) <= 0) {
 
return $data;
 
}
 
foreach ($data as $key => $value) {
 
$temp[$key] = $value[$filed];
 
}
 
array_multisort($temp, $type, $data);
 
return $data;
 
}
 
public function sort2Dimension(&$data, $filed1, $type1, $filed2, $type2)
 
{
 
if (count($data) <= 0) {
 
return $data;
 
}
 
foreach ($data as $key => $value) {
 
$sort_filed1[$key] = $value[$filed1];
 
$sort_filed2[$key] = $value[$filed2];
 
}
 
array_multisort($sort_filed1, $type1, $sort_filed2, $type2, $data);
 
return $data;
 
}
 
public function sort3Dimension(&$data, $filed1, $type1, $filed2, $type2, $filed3, $type3)
 
{
 
if (count($data) <= 0) {
 
return $data;
 
}
 
foreach ($data as $key => $value) {
 
$sort_filed1[$key] = $value[$filed1];
 
$sort_filed2[$key] = $value[$filed2];
 
$sort_filed3[$key] = $value[$filed3];
 
}
 
array_multisort($sort_filed1, $type1, $sort_filed2, $type2, $sort_filed3, $type3, $data);
 
return $data;
 
}

In diesem Artikel wird die detaillierte Erklärung des mehrdimensionalen PHP-Array-Sortierarrays erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

PHP-Implementierung des Bucket-Sortieralgorithmus

Detaillierte Erläuterung der Zusammenführungssortierung der PHP-Sortieralgorithmusserie

kohärenter Betrieb der ThinkPHP5-Framework-Datenbank: Cache()-Nutzungsdetails

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des mehrdimensionalen PHP-Array-Sortierarrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn