Maison >développement back-end >tutoriel php >Explication détaillée du tableau de tri de tableaux multidimensionnels PHP

Explication détaillée du tableau de tri de tableaux multidimensionnels PHP

jacklove
jackloveoriginal
2018-05-22 17:45:531959parcourir

Cet article explique l'explication détaillée du tableau de tri de tableaux multidimensionnels PHP.

Tableau PHP Le tableau est trié par champs

/** 
* 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() prend en charge le tri de tableaux jusqu'à 3 dimensions et peut bien sûr être étendu à la surcharge de méthodes personnalisées. implémente le multidimensionnel Pour le tri des nombres, le multidimensionnel fait ici référence à plusieurs champs de données.

Utilisation :

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;
 
}

Cet article explique l'explication détaillée du tableau de tri de tableaux multidimensionnels PHP Pour plus de contenu connexe, veuillez faire attention au chinois PHP. site web.

Recommandations associées :

Implémentation PHP de l'algorithme de tri par bucket

Explication détaillée du tri par fusion de la série d'algorithmes de tri PHP

Opération cohérente de la base de données du framework thinkPHP5 : détails d'utilisation de cache()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn