"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment trier un tableau d’objets par date en PHP ?

Comment trier un tableau d’objets par date en PHP ?

Publié le 2024-11-09
Parcourir:899

How to Sort an Array of Objects by Date in PHP?

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.

Dernier tutoriel Plus>

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