Transformer avec 'array_map'
Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 39 sur 68.
La fonction array_map() est un outil puissant qui transforme chaque élément d'un tableau en appliquant une fonction de rappel à chacun d'eux. Contrairement aux fonctions qui modifient le tableau original, array_map() crée et retourne un tout nouveau tableau avec les valeurs transformées.
La syntaxe de base nécessite deux paramètres : premièrement, la fonction de rappel que vous souhaitez appliquer, et deuxièmement, le tableau que vous souhaitez transformer. PHP possède de nombreuses fonctions intégrées qui fonctionnent parfaitement comme rappels avec array_map().
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Résultat : ["ALICE", "BOB", "CHARLIE"]
?>Dans cet exemple, strtoupper est appliqué à chaque élément du tableau $names. Le tableau original reste inchangé, tandis que $uppercaseNames contient les résultats transformés. Cela rend array_map() idéal lorsque vous devez traiter des données sans perdre les valeurs d'origine.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileVous recevrez deux entrées : une liste de prix de produits séparés par des virgules et un pourcentage de remise. La première entrée contient les prix sous forme de chaîne de caractères au format 19.99,25.50,12.75,8.00, et la seconde entrée est le pourcentage de remise sous forme de nombre (exemple : 15).
Lisez les deux entrées, convertissez les prix séparés par des virgules en un tableau de nombres, appliquez le pourcentage de remise à chaque prix en utilisant array_map() avec la fonction intégrée floatval pour la conversion et un calcul pour la remise, et affichez chaque prix remisé sur une ligne distincte, arrondi à 2 décimales.
Pour calculer le prix remisé : multipliez le prix d'origine par (100 - discount) / 100.
Format d'entrée :
- Première ligne : Prix des produits séparés par des virgules (exemple :
19.99,25.50,12.75,8.00) - Deuxième ligne : Pourcentage de remise sous forme de nombre (exemple :
15)
Sortie attendue : Chaque prix remisé affiché sur une ligne distincte, arrondi à 2 décimales (exemple : 16.99, 21.68, 10.84, 6.80)
Aide-mémoire
La fonction array_map() transforme chaque élément d'un tableau en lui appliquant une fonction de rappel (callback). Elle crée et retourne un nouveau tableau contenant les valeurs transformées, laissant le tableau original inchangé.
Syntaxe de base avec une fonction intégrée :
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Résultat : ["ALICE", "BOB", "CHARLIE"]
?>La fonction prend deux paramètres : la fonction de rappel et le tableau à transformer. Vous pouvez utiliser des fonctions PHP intégrées ou des fonctions anonymes comme rappels.
Essayez vous-même
<?php
// Lire l'entrée
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// Convertir les prix séparés par des virgules en tableau
$prices = explode(',', $prices_input);
// TODO: Écrivez votre code ci-dessous
// Utilisez array_map() pour appliquer la remise à chaque prix
// Afficher chaque prix remisé sur une ligne distincte
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Fonctions avancées
Fonctions anonymesClosures et 'use'Fonctions fléchéesFonctions de rappelUtilisation de 'call_user_func'Fonctions variablesPassage par référenceFonctions récursivesRécapitulatif : Mélange de fonctions4Tableaux multidimensionnels
Créer un tableau 2DAccéder aux éléments d'un tableau 2DModifier les éléments d'un tableau 2DItérer avec des boucles imbriquéesTableaux associatifs 2DRécapitulatif : Exercice de grille simple2Manipulations avancées de tableaux
Ajouter avec 'array_push'Supprimer avec 'array_pop'Ajouter avec 'array_unshift'Supprimer avec 'array_shift'Fusionner des tableaux indexésFusionner des tableaux associatifsExtraire avec 'array_slice'Valeurs avec 'in_array'Clés avec 'array_search'Récapitulatif : Exercice Playlist3Tri des tableaux
Trier les tableaux indexés par ordre croissantTrier les tableaux indexés par ordre décroissantTrier les tableaux associatifs par valeurTrier les tableaux associatifs par cléTri par ordre naturelTri personnalisé avec 'usort'Récapitulatif : Tri d'un classement6Fonctions de tableau d'ordre supérieur
Transformer avec 'array_map''array_map' avec une fonction personnaliséeFiltrer avec 'array_filter''array_filter' avec une fonction personnaliséeRéduire avec 'array_reduce'Parcourir avec 'array_walk'Récapitulatif : Traitement des données