Tri d'un tableau JSON en PHP

Fermé
Utilisateur anonyme - 24 mars 2023 à 06:02
jordane45 Messages postés 38402 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 février 2025 - 24 mars 2023 à 07:34

Bonjour,

J'ai créé un site sur le cinéma grâce à une API. Ce site donne des infos sur tous les films existants (pays, année de sortie, résumé, réalisateur, casting...) mais également sur les séries TV et les personnalités du cinéma.

Les fiches sur les personnalités du cinéma (qu'ils soient acteurs, réalisateurs, compositeurs..) donnent des infos sur la personne et également sa filmographie.

Mon souci c'est que les filmographies sont triées par ordre d'entrées dans la base de données de l'API et j'aimerai les trier soit par date de sortie (donc par la variable $date), soit par ordre alphabétique (donc par la variable $titre). Mon problème c'est que je n'y arrive pas.

Voici le résultat JSON de l'API que j'utilise (exemple pour un acteur)

{
  "cast": [
    {
      "adult": false,
      "backdrop_path": "/q4NwmaakQzfGz89Bo5FmVRktGYR.jpg",
      "genre_ids": [
        35
      ],
      "id": 398926,
      "original_language": "fr",
      "original_title": "Mon Poussin",
      "overview": "Vincent, 18 ans, se fait larguer par Elina. C’est son premier amour, c’est la fin du monde ! Ses parents décident donc de prendre les choses en main et vont tout tenter pour lui faire oublier cette fille : il devra les suivre dans une cure de désintoxication amoureuse dont ils vont imaginer le programme…",
      "popularity": 6.172,
      "poster_path": "/hbTV5x1u17ZtfzZ6zeY06U8Z02.jpg",
      "release_date": "2017-06-28",
      "title": "Mon Poussin",
      "video": false,
      "vote_average": 5.5,
      "vote_count": 148,
      "character": "Intervenant 2",
      "credit_id": "636d8ab60499f200a6627b95",
      "order": 5
    },
    {
      "adult": false,
      "backdrop_path": "/tYJzcRdr0hEc5EzMS9DQeMlW3eZ.jpg",
      "genre_ids": [
        35
      ],
      "id": 315071,
      "original_language": "fr",
      "original_title": "Soda : Un trop long week-end",
      "overview": "Kev Adams se glisse ici à nouveau dans la peau d’Adam Fontella, lequel doit visiter un appartement de rêve dans lequel il compte bien emménager. Le problème est, qu’outre ses meilleurs amis, Slim et Ludo, Adam avait promis de partager son nid douillet avec Juliette, la femme de sa vie. Et la situation se complique lorsque l’on sait que la jeune femme est la fille de Jean-Jérôme Juhel, le patron de son père. L’avenir du patriarche, qui convoite le poste de directeur de région de sa banque, est donc entre ses mains. Les Fontella sont invités à passer le prochain week-end dans la propriété des Juhel, avec deux objectifs : décrocher une promotion pour Michel, et séduire Juliette pour Adam. Et pour Slim et Ludo, récupérer leur pote à tout prix. Evidemment, rien ne va se dérouler comme prévu !",
      "popularity": 2.348,
      "poster_path": "/vG6q2TWVFG4xJOylA2kti15rcnz.jpg",
      "release_date": "2014-10-15",
      "title": "Soda : Un trop long week-end",
      "video": true,
      "vote_average": 5.6,
      "vote_count": 32,
      "character": "Ludovic « Ludo » Drancourt",
      "credit_id": "62dd211358361b004ca52d54",
      "order": 6
    },
    {
      "adult": false,
      "backdrop_path": "/3Tn12WIePhganl9HwtmYHWOOhw3.jpg",
      "genre_ids": [
        35
      ],
      "id": 667421,
      "original_language": "fr",
      "original_title": "Le malade imaginaire",
      "overview": "L'une des plus célèbres pièces de Molière, \"Le Malade Imaginaire\", est à l'affiche du Théâtre de Paris à partir du 25 janvier, jusqu'au 25 mai 2019, avec Daniel Auteuil dans le rôle principal et à la mise en scène. (RE)vivez l'intégralité de cette pièce de théâtre «Le Malade Imaginaire», avec Daniel Auteuil... Véritable satire des médecins de l’époque ! Argan est un homme parfaitement bien portant, ce qui ne l’empêche pas de se croire très malade et qui demande toutes les saignées, purges et remèdes possibles à ses médecins. Ces derniers font tout pour le satisfaire à défaut de le guérir... Retrouvez Daniel Auteuil dans Le Malade Imaginaire, une des pièces mythiques de Molière. Le Malade imaginaire est la toute dernière comédie écrite par Molière. C'est une comédie-ballet jouée au Théâtre du Palais-Royal en 1673 par sa troupe. Jean-Baptiste Poquelin est décédé à la suite d'un malaise pendant la quatrième représentation du Malade Imaginaire.",
      "popularity": 1.655,
      "poster_path": "/v49PqokII21pUfZer3A676bsTJE.jpg",
      "release_date": "2019-05-25",
      "title": "Le malade imaginaire",
      "video": false,
      "vote_average": 8.0,
      "vote_count": 1,
      "character": "",
      "credit_id": "5e9f813bf1b571001c8e4805",
      "order": 7
    },
    {
      "adult": false,
      "backdrop_path": null,
      "genre_ids": [
        10770,
        18,
        80
      ],
      "id": 586153,
      "original_language": "fr",
      "original_title": "Illégitime",
      "overview": "Dans la banlieue lilloise, Stéphane tient un bureau de tabac avec son père Maurice, militaire à la retraite dont il ne s'est jamais vraiment émancipé. Étouffé dans son couple, Stéphane n'ose quitter Elise, sa femme, avocate, et entretient depuis peu une relation avec Leila, kinésithérapeute et mère de deux enfants. Ensemble, ils fondent le projet d'une vie meilleure. Tout bascule le jour où Sofiane, le fils de Leila, quinze ans, braque le commerce de Maurice.",
      "popularity": 1.185,
      "poster_path": "/dUM2nB2FnGAc6gACZolZjTnWLX6.jpg",
      "release_date": "2019-03-13",
      "title": "Illégitime",
      "video": false,
      "vote_average": 6.2,
      "vote_count": 8,
      "character": "Xavier",
      "credit_id": "636d8afa1b729400829d9d20",
      "order": 7
    },
    {
      "adult": false,
      "backdrop_path": null,
      "genre_ids": [
        35
      ],
      "id": 371029,
      "original_language": "fr",
      "original_title": "SODA : Le rêve américain",
      "overview": "Dans ce nouveau téléfilm de 90 minutes, la famille Fontella vit un moment décisif. Sans pourtant être une grande surprise, l’échec d’Adam au bac fait l’effet d’une bombe : bye bye l’été aux Etats-Unis, bonjour le stage dans la banque de son père. Ces tensions vont même pousser Michel et Babeth, ses parents, à envisager le divorce... Heureusement, Adam trouve une solution miracle : pour vivre son rêve américain, il va participer, avec ses deux meilleurs amis Slim et Ludo, à un jeu télé pour gagner un visa d’un an pour les Etats-Unis. La famille Fontella pourra-t-elle éviter l’implosion et surtout, Adam s’envolera-t-il pour New York ? Le moins qu’on puisse dire, c’est que ce n’est pas gagné d’avance...",
      "popularity": 4.924,
      "poster_path": "/8VIr9AlZhOvip4w7rzguq5neQNA.jpg",
      "release_date": "2015-12-23",
      "title": "Soda : Le rêve américain",
      "video": false,
      "vote_average": 5.3,
      "vote_count": 113,
      "character": "Ludovic « Ludo » Drancourt",
      "credit_id": "62dd25a4e9da69042cd9660b",
      "order": 8
    },
    {
      "adult": false,
      "backdrop_path": "/sZNS6znsI0b1KnSk6b5xCEnNDBQ.jpg",
      "genre_ids": [
        35
      ],
      "id": 86868,
      "original_language": "fr",
      "original_title": "La Vérité si je mens ! 3",
      "overview": "Eddie, Dov, Yvan et les autres… Nos chaleureux amis ont migré du Sentier moribond à la banlieue florissante d’Aubervilliers… Là où les vieux entrepreneurs juifs ont laissé le terrain à de jeunes grossistes chinois courageux et dynamiques… La petite bande est toujours aussi soudée, solidaire que lors des épisodes précédents, et la vie suit son cours, au gré des petits évènements familiaux et des affaires. Dov semble toujours frivole, Eddie entreprenant, Yvan transi, Karine désinvolte, Sandra résolue, Chochana naïve, Serge irresponsable et mythomane. Quant à Patrick, il est amoureux et l’heureuse élue est loin d’être facile d’accès. Tout irait pour le mieux jusqu’à ce qu’un vent mauvais apporte son lot d’adversité compromettant sérieusement la cohésion du groupe. Succomberont-ils sous l’orage à la zizanie, ou bien, une fois de plus, à force d’entraide, de ruses et d’habileté, triompheront-ils de la crise avec panache ?",
      "popularity": 7.055,
      "poster_path": "/3cIzGJeIJUmWn7g7jW6qP2ERjiL.jpg",
      "release_date": "2012-01-31",
      "title": "La Vérité si je mens ! 3",
      "video": false,
      "vote_average": 5.5,
      "vote_count": 307,
      "character": "Le garçon geek",
      "credit_id": "552bb36ac3a3681f5c006a80",
      "order": 72
    }
  ],
  "crew": [
    
  ],
  "id": 1453701
}

Voici mon code PHP

$reponseFilmographie = file_get_contents(ici l'url de mon api);
$resultatFilmographie = json_decode($reponseFilmographie, true);
echo '<div class="divCompo">'; //ouverture de la div divCasting
echo '<span class="details souligner">Filmography</span> : <span class="conseil">(Hover over a movie or TV show to see the full title)</span><br/><br/>';
foreach ($resultatFilmographie['cast'] as $filmographie) {
    $titre = $filmographie['title'];
    $role = $filmographie['character'];
    $idFilm = $filmographie['id'];
    $visuel = $filmographie['poster_path'];
    $date = $filmographie['release_date'];
 
    echo '<div class="compo">'; //ouverture de la div castingFilm
    echo '<br/>';
    echo "<span class='lienCompo'><a href='filmSheet.php?idFilm=$idFilm' title=\"$titre\">";
    if ($visuel == '' or $visuel == NULL) {
        echo '<img class="imageCompo" src="../images/visuel_en.png">';
    } else {
        echo '<img class="imageCompo" src="' . $url_img . $visuel . '">';
    }
    echo '</a>';
    echo '<br/>';

    echo "<a href='filmSheet.php?idFilm=$idFilm' title=\"$titre\">";
    $max = 15;
    if (strlen($titre) >= $max) {
        $titre = mb_substr($titre, 0, $max);
    }
  
    echo $titre . "...<br /> (Film)<br />";
    sort($date);
    echo "Release : ".$date;
    echo '</a></span><br/><br/>';

    echo '</div>';
}

 En allant sur php.net j'ai lu que les tris de tableaux par ordre croissant se faisaient par une fonction basique sort()

Pour tester sur la date de sortie j'ai donc fait un sort($date) mais il me retourne le message d'erreur suivant :


Fatal error: Uncaught TypeError: sort(): Argument #1 ($array) must be of type array, string given in /homepages/29/d931857138/htdocs/personSheet.php:139 Stack trace: #0 /homepages/29/d931857138/htdocs/personSheet.php(139): sort('2019-11-04') #1 {main} thrown in /homepages/29/d931857138/htdocs/personSheet.php on line 139

Je ne sais pas du tout comment m'y prendre pour trier ce tableau.
Merci si on peut m'aider à y voir plus clair

A voir également:

1 réponse

jordane45 Messages postés 38402 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 février 2025 4 732
24 mars 2023 à 07:34

Bonjour

https://www.google.com/amp/s/www.geeksforgeeks.org/how-to-sort-an-array-of-associative-arrays-by-value-of-a-given-key-in-php/amp/


0