Menu
Coddy logo textTech

'array_map' con funciones personalizadas

Parte de la sección Lógica y Flujo del Journey de PHP de Coddy. Lección 40 de 68.

Aunque las funciones integradas como strtoupper funcionan bien con array_map(), la verdadera potencia proviene de usar tus propias funciones personalizadas. Esto te permite crear transformaciones específicas adaptadas exactamente a tus necesidades.

Para usar una función personalizada con array_map(), simplemente pasa el nombre de la función como una cadena para el primer parámetro. Tu función personalizada debe aceptar un parámetro (el elemento actual del arreglo) y devolver el valor transformado.

<?php
function doubleNumber($num) {
    return $num * 2;
}

$numbers = [1, 2, 3, 4, 5];
$doubled = array_map("doubleNumber", $numbers);
// Resultado: [2, 4, 6, 8, 10]
?>

Este enfoque te brinda un control total sobre cómo se procesa cada elemento. Puedes realizar cálculos complejos, manipulaciones de cadenas o cualquier otra lógica dentro de tu función personalizada, lo que hace que array_map() sea increíblemente versátil para tareas de transformación de datos.

challenge icon

Desafío

Fácil

Recibirás dos entradas: una lista de temperaturas en Celsius separadas por comas y una unidad de destino para la conversión (ya sea F para Fahrenheit o K para Kelvin). La primera entrada contiene temperaturas como una cadena con el formato 0,10,20,30,100, y la segunda entrada es un solo carácter que indica el tipo de conversión.

Lee ambas entradas, convierte las temperaturas separadas por comas en un array de números, crea una función personalizada que convierta una temperatura Celsius a la unidad de destino, usa array_map() con tu función personalizada para transformar todas las temperaturas e imprime cada temperatura convertida en una línea separada, redondeada a 2 decimales.

Fórmulas de conversión:

  • De Celsius a Fahrenheit: (C × 9/5) + 32
  • De Celsius a Kelvin: C + 273.15

Formato de entrada:

  • Primera línea: temperaturas en Celsius separadas por comas (ejemplo: 0,10,20,30,100)
  • Segunda línea: unidad de conversión de destino: F o K (ejemplo: F)

Salida esperada: Cada temperatura convertida se imprime en una línea separada, redondeada a 2 decimales

Pruébalo tú mismo

<?php
// Leer las temperaturas separadas por comas
$temperatures = fgets(STDIN);

// Leer la unidad objetivo (F o K)
$unit = trim(fgets(STDIN));

// Convertir la cadena separada por comas en un array de números
$tempArray = explode(',', trim($temperatures));

// TODO: Escribe tu código debajo
// Crear una función personalizada para convertir Celsius a la unidad objetivo
// Usar array_map() para aplicar la conversión a todas las temperaturas
// Imprimir cada temperatura convertida en una línea separada, redondeada a 2 decimales

?>
quiz iconPonte a prueba

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

Practica por tu cuenta: Compilador de PHP online