Tri des tableaux multidimensionnels par date
Le tri des données dans des tableaux multidimensionnels peut être une tâche courante, en particulier lors de l'organisation d'informations avec un champ horodaté. Cette question explore comment trier un tableau d'enregistrements, où chaque enregistrement contient un champ « datetime » au format « Y-m-d H:i:s ».
Solution
La solution fournie utilise la fonction usort(), qui prend une fonction de comparaison comme deuxième argument. Dans ce cas, la fonction de comparaison date_compare() est définie :
function date_compare($a, $b) { $t1 = strtotime($a['datetime']); $t2 = strtotime($b['datetime']); return $t1 - $t2; }
Cette fonction extrait les horodatages UNIX des champs "datetime" et renvoie leur différence. Les valeurs négatives indiquent que le premier argument est antérieur, tandis que les valeurs positives indiquent que le deuxième argument est antérieur.
En passant cette fonction de comparaison à usort(), le tableau est trié par ordre croissant en fonction du " champ datetime » :
usort($array, 'date_compare');
Affinage de l'approche
Lorsque vous travaillez avec des tableaux de tableaux, il est important de clarifier la terminologie. Les sous-tableaux individuels sont appelés « enregistrements » et la collection entière est un « tableau d'enregistrements ».
Le rôle d'Usort
usort() fournit un mécanisme de tri précieux. Il prend deux enregistrements à la fois et appelle la fonction de comparaison avec eux. La valeur de retour de la fonction de comparaison détermine la manière dont usort() réorganise les éléments. Lorsque la valeur est négative, le premier enregistrement est placé avant le second ; lorsqu'il est positif, le deuxième enregistrement précède le premier ; et quand zéro, ils restent dans le même ordre.
Application de la solution
Dans ce cas précis, la fonction de comparaison date_compare() détermine l'ordre temporel des enregistrements . Si l'horodatage du premier enregistrement est antérieur, une valeur négative est renvoyée, ce qui entraîne son placement avant le deuxième enregistrement. De même, une valeur de retour positive indique que le deuxième enregistrement est antérieur et une valeur de zéro indique que les horodatages sont les mêmes. usort() utilise ces comparaisons pour réorganiser le tableau de telle sorte que les enregistrements soient classés par ordre chronologique.
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!