Ce face array_reduce
array_reduce trece prin elemente și ține minte un rezultat intermediar (numit de obicei $acumulator). La fiecare pas, funcția primește rezultatul de până atunci și elementul curent și returnează noul rezultat.
Valoarea de pornire este $initial. Dacă tabloul este gol, funcția returnează direct $initial.
Parametri
| Parametru | Descriere |
|---|---|
$array |
Tabloul parcurs. |
$callback |
Funcția fn($acumulator, $element) care returnează noul rezultat. |
$initial |
Opțional. Valoarea de pornire. Implicit null. |
Ce returnează
Rezultatul final.
Exemple
Exemplul 1: Totalul unui coș cu cantități
<?php
$cos = [
["produs" => "Pix", "pret" => 3, "buc" => 10],
["produs" => "Caiet", "pret" => 8, "buc" => 4],
];
$total = array_reduce($cos, fn($suma, $r) => $suma + $r["pret"] * $r["buc"], 0);
echo "Total: $total lei";
Rezultat
Total: 62 lei
Exemplul 2: Gruparea pe orașe
<?php
$clienti = [["nume" => "Ana", "oras" => "Iași"], ["nume" => "Mihai", "oras" => "Cluj"], ["nume" => "Ioana", "oras" => "Iași"]];
$peOrase = array_reduce($clienti, function ($grupe, $c) {
$grupe[$c["oras"]][] = $c["nume"];
return $grupe;
}, []);
print_r($peOrase);
Rezultat
Array
(
[Iași] => Array
(
[0] => Ana
[1] => Ioana
)
[Cluj] => Array
(
[0] => Mihai
)
)
Greșeli frecvente
- Uiți
returnîn funcție. Rezultatul devinenulldupă primul pas. - Uiți valoarea inițială când construiești un tablou. Pornești de la
null; dă[]ca al treilea parametru.
Comenzi înrudite
array_sum / array_product: Adună toate valorile unui tablou (array_sum) sau le înmulțește (array_product).array_map: Aplică o funcție pe fiecare element al unui tablou și returnează tabloul cu rezultatele.array_filter: Păstrează doar elementele dintr-un tablou care îndeplinesc o condiție.