Comment trier un tableau JSON avec PHP
Tout d'abord, je suis un débutant complet à ce sujet, j'ai cherché des solutions mais aucune ne semble faire l'affaire.
Donc je suis en train de trier ce tableau JSON par date, mais je ne sais pas vraiment je dois lutter contre cette, toutes les astuces dans la bonne direction sont très appréciés!
["info":[
{"id":1, "title":"original title", "name":"john doe", "date":"2010-05-15"},
{"id":2, "title":"another title", "name":"foo bar", "date":"2009-04-11"},
...
Je suis donc d'obtenir les données de cette
$data=file_get_contents('jsondata...');
$d=json_decode($data,true);
Je voudrais trier les données par date, toutes les idées de comment je dois aborder cette? Il est également possible de retourner la valeur de l'année seulement? Donc, la sortie serait 2009 au lieu de 2009-04-11?
Merci d'avance
Utilisation
Quelle est la profondeur avez-vous essayé de creuser dans cette? Il ne semble pas comme vous avez vraiment essayé de faire ce que vous nous demandez de vous aider avec.
j'ai joué avec elle depuis 2 jours, j'ai lu et essayé beaucoup de solutions que j'ai trouvé sur d'autres questionner le même problème mais j'ai sans doute été l'appliquant à tort puisque je suis encore très nouveau pour cette. Désolé pour demander de l'aide.
strtotime
pour le transformer en un certain nombre, puis de trier par qui?Quelle est la profondeur avez-vous essayé de creuser dans cette? Il ne semble pas comme vous avez vraiment essayé de faire ce que vous nous demandez de vous aider avec.
j'ai joué avec elle depuis 2 jours, j'ai lu et essayé beaucoup de solutions que j'ai trouvé sur d'autres questionner le même problème mais j'ai sans doute été l'appliquant à tort puisque je suis encore très nouveau pour cette. Désolé pour demander de l'aide.
OriginalL'auteur xtoffer | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
usort
et une fonction de comparaison:<=>
travaux sur cordes ici, car une comparaison de chaîne est également une comparaison de dates lors de vos dates au format AAAA-MM-JJ.Puis, pour montrer la valeur de l'année pour une entrée, vous pouvez analyser la date dans un
DateTime
et reformater:Voici une démo.
Vous devez les accepter une réponse comme correcte afin de ne pas apprécier à leur effort pour vous aider, mais vous pouvez aussi aider quelqu'un comme moi qui a le même problème que vous et j'ai essayer de trouver la réponse à partir d'ici est la bonne! Je vous remercie à l'avance!
Merci pour la réponse, dommage qu'il n'est pas marqué comme résolu..
Note: depuis PHP 5.2.2, DateTime objets peuvent être comparées en utilisant des opérateurs de comparaison, de sorte que vous devez simplement être en mesure de
return ($dA > $dB)
ne pas s'attendre à un retour boolean, mais vous avez raison, il ne fait pas beaucoup de sens de comparer uniquement l'année, même si vous n'spectacle de l'année.
OriginalL'auteur Ry-
Vous devez convertir la date à triable format premier. Je pense que
strtotime()
fait le travail. Après cela, vous pouvez la production, que ce soit avecstrftime()
.OriginalL'auteur Frank van Wijk
Utilisation uasort pour trier le tableau avec la fonction définie par l'utilisateur et la fonction strtotime pour analyser la date d'horodatage.
Sortie
uasort
parce que les touches sont numériques, et de les commander en maintenant les touches numériques peuvent être extrêmement déroutant (dans votre sortie,0
vient après1
).Oui, il le fait et le fait parce que je le veux. Je ne veux pas modifier le tableau plus alors il est nécessaire pour aucune raison. Si la clé est réellement important?
Je parie que vous $50, que l'OP ne veut pas que l'article 1 de venir avant l'élément 0 du tableau, surtout depuis qu'il n'était pas associatif pour commencer 😉
Vous pouvez parier moi ce que vous voulez, je ne vais pas changer d'index juste parce que je pense que je peux.
Soupir je ne pense pas que vous comprenez comment ridicule d'avoir un tableau dans l'ordre avec ces touches est. Mais quoi que ce soit.
OriginalL'auteur cypher
Quelque chose comme ce qui suit devrait vous aider à démarrer:
OriginalL'auteur Andreas Wong