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
$numbers
matriz que possui três números 10, 20 e 30. - Segundo, defina uma variável
$total
e inicialize-a com zero. - Terceiro, some os números do
$numbers
array à$total
variável iterativamente usando umforeach
loop. - Por fim, mostre o valor da
$total
variável.
Alternativamente, você pode usar a array_reduce()
função para obter o mesmo resultado sem usar a foreach
instrução:
<?php
$numbers = [10,20,30];
$total = array_reduce($numbers, function ($previous, $current) {
return $previous + $current;
});
echo $total; // 60
Linguagem de código: HTML, XML ( xml )
A array_reduce()
função aceita um array e uma função de retorno de chamada. Reduz o $numbers
array 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; // 60
Linguagem 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 ) : mixed
Linguagem 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 aarrary_reduce()
função usa no início do processo de redução. A função array_reduce() retorna$initial
como resultado final se$array
estiver vazio.
Se a matriz de entrada estiver vazia ou for $initial
omitida, a array_reduce()
função retornará nulo.
A $callback
funçã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 ) : mixed
Linguagem de código: PHP ( php )
A função de retorno de chamada aceita dois argumentos:
- O
$carry
contém o valor de retorno da iteração anterior. Na primeira iteração, ele mantém o valor de$initial
em vez disso. - O
$item
conté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; // 155
Linguagem de código: HTML, XML ( xml )
Se a carts
matriz 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; // 155
Linguagem de código: HTML, XML ( xml )
Como a $carts
matriz 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.