Maison >développement back-end >tutoriel php >Comment trier un tableau d'objets par date en PHP ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 03:36:031093parcourir

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

Tri d'un tableau d'objets par date

En PHP, on rencontre 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 :

<code class="php">$array = [
    495 => (object)['date' => '2009-10-31 18:24:09'],
    582 => (object)['date' => '2010-2-11 12:01:42'],
];</code>

Pour trier ces objets par leur propriété date par ordre croissant (le plus ancien en premier), nous pouvons utiliser la fonction strtotime() et la fonction usort().

Fonction de comparaison personnalisée

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 :

<code class="php">function cb($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
}</code>

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 :

<code class="php">usort($array, 'cb');</code>

Exemple

En utilisant l'exemple de tableau précédent, le tableau trié résultant serait :

<code class="php">[
    495 => (object)['date' => '2009-10-31 18:24:09'],
    582 => (object)['date' => '2010-2-11 12:01:42'],
]</code>

PHP 5.3 et supérieur

Pour PHP 5.3 et ci-dessus, une fonction anonyme plus simple peut être utilisée comme fonction de comparaison :

<code class="php">usort($array, function($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
});</code>

Cette approche permet d'obtenir le même résultat de tri que la précédente.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn