Visant aux exigences de tri des tableaux multidimensionnels, un nouvel algorithme de tri multidimensionnel est proposé, optimisé sur la base du principe de tri à bulles. Les étapes de mise en œuvre comprennent : l'initialisation du tableau trié. Parcourez les éléments du tableau dans l’ordre. Appelez une fonction de comparaison pour comparer des éléments adjacents. Si le résultat de la comparaison est -1, les éléments sont échangés. Renvoie le tableau trié.
L'évolution du tri multidimensionnel des tableaux PHP : explorer une nouvelle génération d'algorithmes de tri
Lorsqu'il s'agit de tableaux multidimensionnels, le tri est une exigence courante. PHP fournit une variété de fonctions de tri, mais elles sont quelque peu inadéquates pour les scénarios de tri multidimensionnels complexes. Cet article présentera un algorithme de tri multidimensionnel novateur et efficace pour aider les développeurs à faire face facilement aux divers besoins de tri.
Algorithme de tri nouvelle génération
L'algorithme de tri que nous proposons est basé sur le principe du tri à bulles, mais est optimisé pour la gestion de tableaux multidimensionnels. La clé de l'algorithme est :
function multi维排序($array, $sortingColumns, $sortOrder = SORT_ASC) { $sortedArray = $array; $columnsCount = count($sortingColumns); for ($i = 0; $i < count($sortedArray); $i++) { for ($j = $i + 1; $j < count($sortedArray); $j++) { $compareResult = compare($sortedArray[$i], $sortedArray[$j], $sortingColumns, $sortOrder); if ($compareResult == -1) { swap($sortedArray, $i, $j); } } } return $sortedArray; }
Fonction de comparaison
function compare($a, $b, $sortingColumns, $sortOrder) { foreach ($sortingColumns as $column) { if ($a[$column] == $b[$column]) { continue; } if ($sortOrder == SORT_ASC) { return $a[$column] < $b[$column] ? 1 : -1; } else { return $a[$column] > $b[$column] ? 1: -1; } } return 0; }
Exemple pratique
Voici un exemple montrant comment utiliser cet algorithme pour trier un tableau multidimensionnel contenant des chaînes et des nombres :
$array = [ ['name' => 'John Doe', 'age' => 25], ['name' => 'Jane Smith', 'age' => 30], ['name' => 'Peter Jones', 'age' => 28] ]; $sortedArray = multi维排序($array, ['age', 'name'], SORT_ASC); print_r($sortedArray);
Sortie :
[ ['name' => 'John Doe', 'age' => 25], ['name' => 'Peter Jones', 'age' => 28], ['name' => 'Jane Smith', 'age' => 30] ]
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!