Menu
Coddy logo textTech

Percorrendo com 'array_walk'

Parte da seção Lógica & Fluxo do Journey de PHP da Coddy. Lição 44 de 68.

A função array_walk() oferece uma abordagem diferente para processar arrays em comparação com array_map(). Enquanto array_map() cria um novo array com valores transformados, array_walk() modifica o array original diretamente, aplicando uma função de callback a cada elemento no próprio lugar.

Esta função é particularmente útil quando você deseja alterar o array existente sem criar uma cópia. A função de callback que você fornece recebe cada elemento do array por referência, permitindo modificar diretamente os valores originais.

<?php
function addPrefix(&$value, $key) {
    $value = "Item: " . $value;
}

$items = ["apple", "banana", "orange"];
array_walk($items, "addPrefix");
// $items agora é: ["Item: apple", "Item: banana", "Item: orange"]
?>

Observe como a função de callback usa &$value para receber o elemento do array por referência. Isso permite que a função modifique diretamente o elemento original do array. O segundo parâmetro $key fornece acesso à chave do elemento atual, embora nem sempre seja necessário para transformações simples.

array_walk() também aceita um terceiro argumento opcional que permite passar dados extras diretamente para sua função de callback. Isso é útil quando sua transformação depende de um valor definido fora do array, como um prefixo, sufixo ou qualquer outra entrada dinâmica.

Quando você passa um terceiro argumento para array_walk(), sua função de callback o recebe como um terceiro parâmetro:

<?php
function addCategory(&$value, $key, $category) {
    $value = $category . ": " . $value;
}

$products = ["laptop", "mouse", "keyboard"];
$prefix = "Electronics";
array_walk($products, "addCategory", $prefix);
// $products is now: ["Electronics: laptop", "Electronics: mouse", "Electronics: keyboard"]
?>

Aqui, $prefix é passado como o terceiro argumento para array_walk(), e o callback o recebe como $category. Dessa forma, você pode reutilizar a mesma função de callback com diferentes prefixos sem codificar nenhum valor diretamente nela.

challenge icon

Desafio

Fácil

Você receberá duas entradas: uma lista de nomes de produtos separados por vírgulas e um prefixo de categoria. A primeira entrada contém nomes de produtos como uma string no formato laptop,mouse,keyboard,monitor, e a segunda entrada é um texto de prefixo de categoria (exemplo: Electronics).

Leia ambas as entradas, converta os nomes de produtos separados por vírgulas em um array, crie uma função de callback que adicione o prefixo de categoria a cada nome de produto no formato "Category: ProductName", use array_walk() com sua função de callback para modificar diretamente o array original e imprima cada nome de produto modificado em uma linha separada.

Sua função de callback deve usar o parâmetro &$value para modificar os elementos do array por referência. A função deve concatenar o prefixo de categoria com dois-pontos e um espaço, seguido pelo nome do produto.

Formato da entrada:

  • Primeira linha: nomes de produtos separados por vírgulas (exemplo: laptop,mouse,keyboard,monitor)
  • Segunda linha: texto do prefixo de categoria (exemplo: Electronics)

Saída esperada: Cada nome de produto modificado impresso em uma linha separada no formato Category: ProductName

Experimente você mesmo

<?php
// Leia os nomes dos produtos separados por vírgula
$products_input = trim(fgets(STDIN));

// Leia o prefixo da categoria
$category = trim(fgets(STDIN));

// Converta a string separada por vírgulas em um array
$products = explode(',', $products_input);

// TODO: Escreva seu código abaixo
// Crie uma função de callback que modifica cada nome de produto adicionando o prefixo da categoria
// Use array_walk() com sua função de callback para modificar o array


// Exiba cada nome de produto modificado em uma linha separada
foreach ($products as $product) {
    echo $product . "\n";
}
?>
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de PHP online