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!