Tri d'un tableau d'objets par date
En PHP, nous rencontrons souvent le besoin de trier un tableau d'objets par une propriété spécifique, comme un champ de date. Cela nous permet d'afficher ou de manipuler nos données dans l'ordre chronologique.
Réorganiser les objets par date
Considérez le tableau d'objets suivant, où chaque objet représente un enregistrement avec un propriété date :
$array = [
495 => (object)['date' => '2009-10-31 18:24:09'],
582 => (object)['date' => '2010-2-11 12:01:42'],
];
Pour trier ces objets par leur propriété date dans l'ordre croissant (le plus ancien en premier), nous pouvons utiliser la fonction strtotime() et la fonction usort().
Comparaison personnalisée Function
Pour utiliser usort(), nous devons définir une fonction de comparaison personnalisée qui compare deux objets en fonction de leur propriété de date. Le code suivant définit une fonction qui soustrait l'horodatage (converti à l'aide de strtotime()) de la date du premier objet de l'horodatage de la date du deuxième objet :
function cb($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
}
Tri du tableau à l'aide de usort()
Une fois que nous avons notre fonction de comparaison, nous pouvons appeler usort() sur le tableau, en passant la fonction de comparaison comme deuxième argument :
usort($array, 'cb');
Exemple
En utilisant l'exemple de tableau précédent, le tableau trié résultant serait :
[
495 => (object)['date' => '2009-10-31 18:24:09'],
582 => (object)['date' => '2010-2-11 12:01:42'],
]
PHP 5.3 et supérieur
Pour PHP 5.3 et supérieur, une fonction anonyme plus simple peut être utilisée comme fonction de comparaison :
usort($array, function($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
});
Cette approche permet d'obtenir le même résultat de tri que la précédente.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3