Ce face array_walk
array_walk trece prin tablou și apelează funcția ta cu valoarea și cheia fiecărui element. Spre deosebire de array_map, nu construiește un tablou nou.
Dacă vrei să modifici elementele, primește valoarea prin referință (&$valoare). Varianta array_walk_recursive intră și în tablourile interioare.
Parametri
| Parametru | Descriere |
|---|---|
$array |
Tabloul parcurs. Poate fi modificat prin referință. |
$callback |
Funcția function($valoare, $cheie, $arg). |
$arg |
Opțional. O valoare trimisă ca al treilea parametru al funcției. |
Ce returnează
Întotdeauna true.
Exemple
Exemplul 1: Afișare cu cheie și valoare
<?php
$preturi = ["pâine" => 5, "lapte" => 8];
array_walk($preturi, function ($pret, $produs) {
echo "$produs: $pret lei\n";
});
Rezultat
pâine: 5 lei
lapte: 8 lei
Exemplul 2: Modificarea elementelor prin referință
<?php
$preturi = ["pâine" => 5, "lapte" => 8];
array_walk($preturi, function (&$pret, $produs, $procent) {
$pret = $pret * (1 + $procent / 100);
}, 10);
print_r($preturi);
Rezultat
Array
(
[pâine] => 5.5
[lapte] => 8.8
)
Exemplul 3: Tablouri în tablouri, cu array_walk_recursive
<?php
$date = ["nume" => " Ana ", "adresa" => ["oras" => " Iași ", "strada" => " Lăpușneanu "]];
array_walk_recursive($date, function (&$v) {
$v = trim($v);
});
print_r($date);
Rezultat
Array
(
[nume] => Ana
[adresa] => Array
(
[oras] => Iași
[strada] => Lăpușneanu
)
)
Greșeli frecvente
- Uiți
&în fața parametrului și te miri că tabloul nu se schimbă. - Salvezi rezultatul lui
array_walkcrezând că este tabloul nou. Funcția returnează doartrue. Pentru un tablou nou foloseștearray_map.
Comenzi înrudite
array_map: Aplică o funcție pe fiecare element al unui tablou și returnează tabloul cu rezultatele.foreach: Parcurge, pe rând, fiecare element dintr-un tablou.array_filter: Păstrează doar elementele dintr-un tablou care îndeplinesc o condiție.