array_walk în PHP

Apelează o funcție pentru fiecare element al unui tablou, cu acces la cheie și la valoare.

Sintaxă
array_walk(object|array &$array, callable $callback, mixed $arg): true

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_walk crezând că este tabloul nou. Funcția returnează doar true. Pentru un tablou nou folosește array_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.