PHP : compléments
Notes de cours
- Introduction à PHP : compléments
- Divers détails spécifiques au langage
- Lecture d’un fichier
Travail personnel
Objectifs
On continue à manipuler PHP et on aborde ses différentes fonctionnalités.
Exercice 1 — Composition de pizzas #
Dans cet exercice, nous travaillerons avec un tableau associatif comportant des clés sous forme de chaînes de caractères représentant des noms d'ingrédients, et des valeurs correspondant aux prix de ces ingrédients, exprimés en nombres réels. Considérons le tableau suivant :$dicoprix=array("jambon"=>3,"saucetomate"=>1.5,'poivrons'=>2,'oignons'=>1,"champignons"=>2,"mozarella"=>1.5, "cremefraiche"=>1.5,"chevre"=>2,"tomates"=>2,"lardons"=>2.5,'saumon'=>4,'merguez'=>3);
- Écrire la fonction
combien(array $dico): int
qui renvoie le nombre d'ingrédients présents dans le tableau $dico. - Écrire la fonction
prix_moyen(array $dico): float
qui renvoie la moyenne des prix des ingrédients du tableau $dico.
Remarque : on pourra arrondir le prix avec 2 chiffres après la virgule.
- Écrire la fonction
moinscher(array $dico): array
qui renvoie le tableau avec les noms des ingrédients le moins cher du tableau $dico. - Écrire la fonction
dollars(array &$dico): void
qui modifie $dico pour que les prix soient en dollars. On prendra comme taux de conversion 1 euro correspond à 1.12 dollars. - Écrire la fonction
prixpizza(array $liste_ingredients, array $dicoprix): float
qui étant donnés une liste d'ingrédients $l qui correspond aux ingrédients d'une pizza et un tableau de prix renvoie le prix de la pizza correspondante : pour cela on fera le total des prix des ingrédients qu'on multipliera par1.5
pour tenir compte de la pâte, du four etc. On suppose que tous les ingrédients des listes sont présents dans le tableau $dicoprix. - Le patron gère plusieurs succursales et il se rend compte qu'il n'y a pas les mêmes prix partout.
Écrire la fonction
gestion(array $dicoprix1, array $dicoprix2): array
qui étant donnés deux tableaux va fabriquer un nouveau tableau de prix : dans le nouveau tableau il doit y avoir tous les ingrédients présents dans l'un des deux tableaux et quand un ingrédient est dans les deux tableaux, on doit garder le prix le moins élevé des deux. - On considère un deuxième tableau : les clés sont des strings qui sont des noms de pizzas et les valeurs
associées sont des listes d'ingrédients. On aura comme exemple :
$monDicoPizzas=array(
"reine"=>["jambon","mozarella","sauce_tomate","champignons"], "vesuvio"=>['merguez','jambon','mozarella','poivrons','oignons'], "cabri"=>["chevre","lardons","creme_fraiche","mozarella"], "napoli"=>["jambon","tomates","mozarella","sauce_tomate","champignons","poivrons","oignons"], "neptune"=>['saumon','creme_fraiche','champignons']); - Écrire la fonction
possible(array $dicopizzas, float $val, array $dicoprix): array
qui renvoie un tableau vaec tous les noms des pizzas qu'on peut acheter si on a la somme val. - Finalement on décide d'avoir une fonction qui peut construire un troisième tableau.
- Écrire la fonction
fusion($dicoprix, $dicopizzas)
qui renvoie le tableau où chaque pizza est associée à son prix et ses ingrédients (la valeur associée à un nom de pizza sera un tableau composé de 1) la liste des ingrédients et 2) du prix) - Écrire une fonction
affichage
qui étant donné un tel tableau (issu de la fusion) fait un affichage style menu de pizzeria :
Menu des pizzas :
* Pizza reine : 12 euros -- jambon/mozarella/sauce_tomate/champignons
* Pizza vesuvio : 15.75 euros -- merguez/jambon/mozarella/poivrons/oignons
..... - Le responsable de la pizzeria veut aider les gens allergiques.
- Ecrire la fonction
inter($l1,$l2)
qui teste si deux tableaux $l1 et $l2 ont au moins un élément commun. - En déduire la fonction
sansAllergie($monDicoPizzas, $listeallergenes)
qui renvoie les noms des pizzas qui ne contiennent aucun élément de listeallergenes dans leur composition.
- Ecrire la fonction
- Écrire la fonction