Transformación con 'array_map'
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 39 de 68.
La función array_map() es una herramienta poderosa que transforma cada elemento de un array aplicando una función de callback a cada uno. A diferencia de las funciones que modifican el array original, array_map() crea y devuelve un array completamente nuevo con los valores transformados.
La sintaxis básica requiere dos parámetros: primero, la función de callback que deseas aplicar, y segundo, el array que deseas transformar. PHP tiene muchas funciones integradas que funcionan perfectamente como callbacks con array_map().
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Resultado: ["ALICE", "BOB", "CHARLIE"]
?>En este ejemplo, strtoupper se aplica a cada elemento en el array $names. El array original permanece sin cambios, mientras que $uppercaseNames contiene los resultados transformados. Esto hace que array_map() sea ideal cuando necesitas procesar datos sin perder los valores originales.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilRecibirás dos entradas: una lista de precios de productos separada por comas y un porcentaje de descuento. La primera entrada contiene los precios como una cadena en el formato 19.99,25.50,12.75,8.00, y la segunda entrada es el porcentaje de descuento como un número (ejemplo: 15).
Lee ambas entradas, convierte los precios separados por comas en un array de números, aplica el porcentaje de descuento a cada precio utilizando array_map() con la función incorporada floatval para la conversión y un cálculo para el descuento, e imprime cada precio con descuento en una línea separada, redondeado a 2 decimales.
Para calcular el precio con descuento: multiplica el precio original por (100 - discount) / 100.
Formato de entrada:
- Primera línea: Precios de productos separados por comas (ejemplo:
19.99,25.50,12.75,8.00) - Segunda línea: Porcentaje de descuento como un número (ejemplo:
15)
Salida esperada: Cada precio con descuento impreso en una línea separada, redondeado a 2 decimales (ejemplo: 16.99, 21.68, 10.84, 6.80)
Hoja de referencia
La función array_map() transforma cada elemento de un array aplicando una función de callback a cada uno. Crea y devuelve un nuevo array con los valores transformados, dejando el array original sin cambios.
Sintaxis básica con una función incorporada:
<?php
$names = ["alice", "bob", "charlie"];
$uppercaseNames = array_map("strtoupper", $names);
// Resultado: ["ALICE", "BOB", "CHARLIE"]
?>La función toma dos parámetros: la función de callback y el array a transformar. Puedes usar funciones de PHP incorporadas o funciones anónimas como callbacks.
Pruébalo tú mismo
<?php
// Leer la entrada
$prices_input = trim(fgets(STDIN));
$discount = floatval(fgets(STDIN));
// Convertir los precios separados por comas en un array
$prices = explode(',', $prices_input);
// TODO: Escribe tu código a continuación
// Usa array_map() para aplicar el descuento a cada precio
// Mostrar cada precio con descuento en una línea separada
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación6Funciones de array de orden superior
Transformación con 'array_map''array_map' con funciones personalizadasFiltrado con 'array_filter''array_filter' con funciones personalizadasReducción con 'array_reduce'Recorrido con 'array_walk'Resumen: Procesamiento de datos