Maison >développement back-end >tutoriel php >Comment trier un tableau multidimensionnel en PHP par une clé spécifique ?
Tri des tableaux multidimensionnels par une clé spécifique
Le tri des tableaux multidimensionnels par une valeur de clé spécifique peut être réalisé en utilisant diverses méthodes dans PHP. Explorons un problème courant et ses solutions à l'aide de cette technique.
Problème :
Comment trier un tableau en fonction de la clé « ordre » ?
Tableaux Structure :
$myArray = [ [ 'hashtag' => 'a7e87329b5eab8578f4f1098a152d6f4', 'title' => 'Flower', 'order' => 3 ], [ 'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594', 'title' => 'Free', 'order' => 2 ], [ 'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b', 'title' => 'Ready', 'order' => 1 ] ];
Solutions :
1. Utilisation de usort avec une fonction personnalisée :
Cette méthode implique de définir une fonction de tri personnalisée qui compare les valeurs de « ordre » et renvoie un résultat de comparaison approprié.
function sortByOrder($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; } usort($myArray, 'sortByOrder');
2. Utilisation de fonctions anonymes :
Dans PHP 5.3 et versions ultérieures, des fonctions anonymes peuvent être utilisées pour simplifier la fonction de tri personnalisée.
usort($myArray, function($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; });
3. Utilisation de l'opérateur de vaisseau spatial (PHP 7 et versions ultérieures) :
PHP 7 a introduit l'opérateur de vaisseau spatial (< =>) pour des opérations de comparaison concises. 4. Utilisation des fonctions fléchées (PHP 7.4 et versions ultérieures) : Les fonctions fléchées simplifient davantage le code en éliminant le mot-clé de fonction. Tri multidimensionnel : Pour les tableaux avec des structures imbriquées, vous pouvez étendre la fonction de tri pour prendre en compte plusieurs clés. Cela permet un tri complexe, tel que le tri par « ordre » dans le « sous-ordre ». Remarque : Si vous devez conserver des associations de clés, envisagez d'utiliser uasort() au lieu de usort(). 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!usort($myArray, function($a, $b) {
return $a['order'] <=> $b['order'];
});
usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);
usort($myArray, function($a, $b) {
$retval = $a['order'] <=> $b['order'];
if ($retval == 0) {
$retval = $a['suborder'] <=> $b['suborder'];
if ($retval == 0) {
$retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
}
}
return $retval;
});