Comment trier une date array en PHP
J'ai un tableau dans ce format:
Array
(
[0] => Array
(
[28th February, 2009] => 'bla'
)
[1] => Array
(
[19th March, 2009] => 'bla'
)
[2] => Array
(
[5th April, 2009] => 'bla'
)
[3] => Array
(
[19th April, 2009] => 'bla'
)
[4] => Array
(
[2nd May, 2009] => 'bla'
)
)
Je veux les trier dans l'ordre croissant des dates (basé sur le jour, le mois et l'année). Quelle est la meilleure façon de le faire?
À l'origine, les e-mails sont récupérés dans la base de données MySQL format de la date, de sorte que son possible pour moi d'obtenir la matrice de dans cet état:
Array
[
['2008-02-28']='some text',
['2008-03-06']='some text'
]
Peut-être lors de son dans ce format, je peux parcourir en boucle, supprimer tous les '-'
(trait d'union) marque de sorte qu'ils sont de gauche comme integars, de les trier à l'aide de array_sort()
et boucle à travers eux une fois encore de les trier? Préférez si il y avait un autre moyen que je ferais 3 boucles avec ce par l'utilisateur.
Grâce.
Edit: je pourrais aussi le faire:
$array[$index]=array('human'=>'28 Feb, 2009',
'db'=>'20080228',
'description'=>'Some text here');
Mais en utilisant cela, y aurait-il aucun moyen pour trier le tableau basé sur le 'db' élément seul?
Edit 2: mise à Jour initiale var_dump
- Pouvez vous s'il vous plaît utiliser var_dump() sur les données plutôt que de créer votre propre format? Au moins, quand votre propre format est aussi ambigu et trompeur, car ce que vous avez posté ici. 😉
Vous devez vous connecter pour publier un commentaire.
Utiliser la norme ISO (
yyyy-mm-dd
) format plutôt que les "anglais", format, puis il suffit d'utiliser laksort
fonction permettant d'obtenir dans le bon ordre.Il n'y a pas besoin de supprimer les traits d'union,
ksort
permettra de faire une comparaison alphanumérique sur la chaîne de touches, et lesyyyy-mm-dd
format fonctionne parfaitement ainsi que l'ordre lexical est la même que la date effective de la commande.MODIFIER je vois que vous avez maintenant corrigé votre question pour montrer que vous avez effectivement obtenu un tableau de tableaux, et que la clé de tri est dans le sous-tableaux. Dans ce cas, vous devez utiliser
uksort
comme le recommande d'ailleurs, mais je vous recommande d'aller avec votre propre éditer et de tri basé sur la bd au format date, plutôt que par l'analyse du format lisible par l'homme:Effectivement, utilisez ceci:
🙂
Je pense qu'il est préférable d'utiliser
usort()
fonction au lieu deuksort()
, parce que parfois vous ne pouvez pas utiliser de variables globales et de toute façon l'utilisation de variables globales n'est pas une bonne pratique.Vous pouvez également utiliser la fonction anonyme.