PHP array_reduce

Resumo : neste tutorial, você aprenderá como usar a array_reduce()função PHP para reduzir um array a um único valor.

Introdução à função array_reduce do PHP

A array_reduce()função reduz um array a um único valor usando uma função de retorno de chamada . É mais fácil entender a array_reduce()função pelo exemplo.

O exemplo a seguir calcula a soma de todos os números em uma matriz:

<?php

$numbers = [10,20,30];

$total = 0;

foreach ($numbers as $number) {
    $total += $number;
}

echo $total; // 60
Linguagem de código:  HTML, XML  ( xml )

Como funciona.

  • Primeiro, defina a $numbersmatriz que possui três números 10, 20 e 30.
  • Segundo, defina uma variável $totale inicialize-a com zero.
  • Terceiro, some os números do $numbersarray à $totalvariável iterativamente usando um foreachloop.
  • Por fim, mostre o valor da $totalvariável.

Alternativamente, você pode usar a array_reduce()função para obter o mesmo resultado sem usar a foreachinstrução:

<?php

$numbers = [10,20,30];

$total  = array_reduce($numbers, function ($previous, $current) {
    return $previous + $current;
});

echo $total; // 60Linguagem de código:  HTML, XML  ( xml )

A array_reduce()função aceita um array e uma função de retorno de chamada. Reduz o $numbersarray a um único valor usando a função de retorno de chamada.

Desde o PHP 7.3, você pode usar uma função de seta em vez de uma função anônima como função de retorno de chamada assim:

<?php

$numbers = [10,20,30];

$total  = array_reduce(
    $numbers,
    fn ($previous, $current) => $previous + $current
);

echo $total; // 60Linguagem de código:  HTML, XML  ( xml )

Sintaxe da função array_reduce() do PHP

O seguinte mostra a array_reduce()sintaxe da função:

array_reduce ( array $array , callable $callback , mixed $initial = null ) : mixedLinguagem de código:  PHP  ( php )

A array_reduce()função possui os seguintes parâmetros:

  • $arrayé a matriz de entrada que será reduzida a um único valor.
  • $callbacké uma função de retorno de chamada que determina como o array deve ser reduzido.
  • $initialé um valor que a arrary_reduce()função usa no início do processo de redução. A função array_reduce() retorna $initialcomo resultado final se $arrayestiver vazio.

Se a matriz de entrada estiver vazia ou for $initialomitida, a array_reduce()função retornará nulo.

A $callbackfunção costuma ser chamada de redutor . É onde você decide a lógica para reduzir os elementos do array. A função de retorno de chamada possui a seguinte assinatura:

callback ( mixed $carry , mixed $item ) : mixedLinguagem de código:  PHP  ( php )

A função de retorno de chamada aceita dois argumentos:

  • O $carrycontém o valor de retorno da iteração anterior. Na primeira iteração, ele mantém o valor de $initialem vez disso.
  • O $itemcontém o valor da iteração atual.

Exemplo de função array_reduce em PHP

O exemplo a seguir usa a array_reduce()função para calcular o total de itens em um carrinho de compras:

<?php

$carts = [
    ['item' => 'A', 'qty' => 2, 'price' => 10],
    ['item' => 'B', 'qty' => 3, 'price' => 20],
    ['item' => 'C', 'qty' => 5, 'price' => 30]
];


$total = array_reduce(
    $carts,
    function ($prev, $item) {
        return $prev + $item['qty'] * $item['price'];
    }
);

echo $total; // 155Linguagem de código:  HTML, XML  ( xml )

Se a cartsmatriz estiver vazia, você obterá o total como null.

Para retornar zero em vez de null, você passa o argumento inicial como zero para a array_reduce()função assim:

<?php

$carts = [];

$total = array_reduce(
    $carts,
    function ($prev, $item) {
        return $prev + $item['qty'] * $item['price'];
    },
    0
);

echo $total; // 155Linguagem de código:  HTML, XML  ( xml )

Como a $cartsmatriz está vazia, o total é zero.

Resumo

  • Use a função PHP array_reduce()para reduzir um array a um único valor usando uma função de retorno de chamada.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *