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

Linda Hamilton
Libérer: 2024-10-26 03:36:03
original
1083 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal