'array_map' com Funções Personalizadas
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 40 de 68.
Embora funções nativas como strtoupper funcionem bem com array_map(), o verdadeiro poder vem do uso de suas próprias funções personalizadas. Isso permite que você crie transformações específicas adaptadas às suas necessidades exatas.
Para usar uma função personalizada com array_map(), basta passar o nome da função como uma string para o primeiro parâmetro. Sua função personalizada deve aceitar um parâmetro (o elemento atual do array) e retornar o 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]
?>Esta abordagem oferece controle total sobre como cada elemento é processado. Você pode realizar cálculos complexos, manipulações de strings ou qualquer outra lógica dentro de sua função personalizada, tornando o array_map() incrivelmente versátil para tarefas de transformação de dados.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilVocê receberá duas entradas: uma lista de temperaturas em Celsius separadas por vírgulas e uma unidade de destino para a conversão (seja F para Fahrenheit ou K para Kelvin). A primeira entrada contém as temperaturas como uma string no formato 0,10,20,30,100, e a segunda entrada é um único caractere indicando o tipo de conversão.
Leia ambas as entradas, converta as temperaturas separadas por vírgulas em um array de números, crie uma função personalizada que converta uma temperatura em Celsius para a unidade de destino, use array_map() com sua função personalizada para transformar todas as temperaturas e imprima cada temperatura convertida em uma linha separada, arredondada para 2 casas decimais.
Fórmulas de conversão:
- Celsius para Fahrenheit:
(C × 9/5) + 32 - Celsius para Kelvin:
C + 273.15
Formato de entrada:
- Primeira linha: Temperaturas em Celsius separadas por vírgulas (exemplo:
0,10,20,30,100) - Segunda linha: Unidade de conversão de destino - seja
FouK(exemplo:F)
Saída esperada: Cada temperatura convertida impressa em uma linha separada, arredondada para 2 casas decimais
Folha de consulta
Use funções personalizadas com array_map() passando o nome da função como uma string. A função personalizada deve aceitar um parâmetro (o elemento atual do array) e retornar o 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]
?>Esta abordagem oferece controle total sobre o processamento dos elementos, permitindo cálculos complexos, manipulações de strings ou qualquer lógica personalizada dentro da sua função.
Experimente você mesmo
<?php
// Lê as temperaturas separadas por vírgula
$temperatures = fgets(STDIN);
// Lê a unidade de destino (F ou K)
$unit = trim(fgets(STDIN));
// Converte a string separada por vírgulas em um array de números
$tempArray = explode(',', trim($temperatures));
// TODO: Escreva seu código abaixo
// Crie uma função personalizada para converter Celsius para a unidade de destino
// Use array_map() para aplicar a conversão a todas as temperaturas
// Imprima cada temperatura convertida em uma linha separada, arredondada para 2 casas decimais
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de Leaderboard6Funções de Ordem Superior para Arrays
Transformando com 'array_map''array_map' com Funções PersonalizadasFiltrando com 'array_filter''array_filter' com Funções PersonalizadasReduzindo com 'array_reduce'Percorrendo com 'array_walk'Recapitulação: Processamento de Dados