コード例 #1
0
 /**
  * Retourne la liste de tous les films, avec la note probable pour un membre
  * @return array : liste des films avec la note probable du membre
  */
 public function listeRecommandations($m)
 {
     // Création d'un tableau associant à chaque genre son coefficient pour le membre
     $listeStats = $this->listeStatsGenres($m);
     foreach ($listeStats as $s) {
         $genres[$s["genre"]] = $s["coefficient"];
     }
     // Tableau à retourner : tableau avec les notes des films
     $i = 0;
     foreach ($this->listeFilms as $film) {
         $res[$i]["id"] = $film->getID();
         $res[$i]["titre"] = $film->getTitre();
         $moyenne = $film->getAverage($this);
         // moyenne du film
         $genresFilm = $film->getGenres();
         // liste des genres du film
         $noteProbable = 0;
         for ($j = 0; $j < count($genresFilm); $j++) {
             // pour chaque genre du film, on multiplie la moyenne du film par le coeff du genre, et on l'ajoute à la note probable du film
             $noteProbable += $moyenne * $genres[$genresFilm[$j]->name];
         }
         $res[$i]["noteProbable"] = $noteProbable / count($genresFilm);
         // on divise par le nombre de genres pour obtenir la moyenne des moyennes (oui, monsieur!)
         $i++;
     }
     // on supprime les films déjà vus par le membre
     foreach ($res as &$a) {
         $f = Film::createFromID($a["id"], $this);
         $noteDonnee = $f->getNote($m->getID());
         if (!is_null($noteDonnee)) {
             $a["noteProbable"] = -1;
         }
     }
     // avant de retourner le tableau, on le trie pour afficher les meilleurs notes devant
     uasort($res, function ($a, $b) {
         return $b["noteProbable"] - $a["noteProbable"];
     });
     // puis on divise les notes par 100 pour faire un truc à peu près sur 10
     foreach ($res as &$a) {
         $a["noteProbable"] /= 100;
     }
     return $res;
 }