Tri d'un tableau multidimensionnel par valeur
Dans un tableau multidimensionnel, vous pouvez rencontrer le besoin de trier ses éléments en fonction de la valeur d'une clé spécifique. Par exemple, considérons le tableau suivant :
Array ( [0] => Array ( [hashtag] => a7e87329b5eab8578f4f1098a152d6f4 [title] => Flower [order] => 3 ) [1] => Array ( [hashtag] => b24ce0cd392a5b0b8dedc66c25213594 [title] => Free [order] => 2 ) [2] => Array ( [hashtag] => e7d31fc0602fb2ede144d18cdffd816b [title] => Ready [order] => 1 ) )
Tri par la clé « ordre »
Pour trier le tableau par la clé « ordre », vous pouvez utiliser la fonction usort(). Voici une description complète de son utilisation :
PHP 5.2 ou version antérieure :
Définissez d'abord une fonction de tri :
function sortByOrder($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; }
PHP 5.3 et versions ultérieures :
Utilisez un nom anonyme fonction :
usort($myArray, function($a, $b) { if ($a['order'] > $b['order']) { return 1; } elseif ($a['order'] < $b['order']) { return -1; } return 0; });
PHP 7 :
Utiliser l'opérateur du vaisseau spatial :
usort($myArray, function($a, $b) { return $a['order'] <=> $b['order']; });
PHP 7.4 :
Utiliser une flèche function :
usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);
Tri multidimensionnel :
Pour le tri multidimensionnel, modifiez la fonction de tri pour référencer les éléments de tri suivants si le premier élément est zéro. Par exemple :
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; });
Associations de clés
Si vous devez conserver des associations de clés, utilisez 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!