Maison > Questions et réponses > le corps du texte
Ma question est de savoir comment obtenir ou diviser un tableau par ordre croissant en utilisant la date clé du tableau,
J'ai beaucoup essayé... mais je n'ai pas réussi,
[ { "id": "47", "date": "07/16/2022", "text": "ph" } { "id": "46", "date": "06/16/2022", "text": "ph" }, { "id": "45", "date": "06/16/2021", "text": "ph" }]
Le résultat dont j'ai besoin est :
[ "2021": [{ "id": "45", "date": "06/16/2021", "text": "ph" }], "2022": [{ "id": "46", "date": "06/16/2022", "text": "ph" }, { "id": "47", "date": "07/16/2022", "text": "ip" }] ]
Comment faire cela en utilisant PHP ou JavaScript ?
P粉5123632332024-02-04 20:18:04
La version PHP pourrait ressembler à ceci :
$input = [ [ "id" => "47", "date" => "07/16/2022", "text" => "ph" ], [ "id" => "46", "date" => "06/16/2022", "text" => "ph" ], [ "id" => "45", "date" => "06/16/2021", "text" => "ph" ] ]; $result = []; foreach ($input as $entry) { $date = new DateTime($entry['date']); $result[$date->format('Y')][] = $entry; } ksort($result);
Comme demandé dans la réponse de Diego, j'y ai également mis ksort
, qui trie le tableau résultant par ordre décroissant par clé.
P粉7261339172024-02-04 14:04:49
Voici une démo sur la façon de convertir un tableau d'entrée en un objet de sortie attendu à l'aide de JavaScript :
const input = [ { "id": "47", "date": "07/16/2022", "text": "ph" }, { "id": "46", "date": "06/16/2022", "text": "ph" }, { "id": "45", "date": "06/16/2021", "text": "ph" } ]; const output = {}; //for each object in the input array for(o of input){ //parse the year part of the date property const year = o.date.substring(6); //if the parsed year doesn't exist yet in the output object if (!output.hasOwnProperty(year)) //then add an empty array to the year key in the output object output[year] = []; //add the current input object to the array bound to the year key in the output object output[year].push(o); } console.log( output );