Maison  >  Questions et réponses  >  le corps du texte

Diviser le tableau d'objets par année JSON à l'aide de PHP

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粉924915787P粉924915787282 Il y a quelques jours357

répondre à tous(2)je répondrai

  • P粉512363233

    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é.

    répondre
    0
  • P粉726133917

    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 );

    répondre
    0
  • Annulerrépondre