Forum und email

array_walk

(PHP 4, PHP 5)

array_walk — Esegue una funzione su ogni elemento dell'array

Descrizione

bool array_walk ( array $&array , callback $funzione [, mixed $datiutente ] )

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esegue la funzione definita dall'utente identificata da funzione su ogni elemento di array . Normalmente funzione accetta due parametri. Il valore del parametro array viene passato per primo, la chiave/indice per secondo. Se il parametro datiutente è specificato, verrà passato come terzo parametro alla funzione callback.

Se funzione richiede più parametri di quanti gliene vengono passati, un errore di livello E_WARNING verrà generato ogni volta che array_walk() la chiama. Questi avvertimenti possono essere soppressi apponendo l'operatore d'errore @ alla chiamata di array_walk(), oppure usando error_reporting().

Nota: Se funzione deve lavorare con i reali valori dell'array, specificare che il primo parametro di funzione deve essere passato come riferimento. A qesto punto ogni modifica a questi elementi verrà effettuata sull'array stesso.

Nota: Il passaggio della chiave e di datiutente a func è stato aggiunto nella versione 4.0.

array_walk() non è influenzato dal puntatore interno dell'array array . array_walk() percorrerà l'intero array indipendentemente dalla posizione del puntatore. Per reinizializzare il puntatore, utilizzare reset(). In PHP 3, array_walk() reinizializza il puntatore.

Gli utenti non possono modificare l'array attraverso la funzione di callback, ad esempio aggiungere/togliere un elemento, o cancellare l'array su cui array_walk() è applicata. Se l'array viene cambiato, il comportamento di questa funzione non è definito ed è imprevedibile.

Example#1 esempio di array_walk()

<?php
$frutta 
= array("d"=>"limone""a"=>"arancia""b"=>"banana""c"=>"mela");

function 
modifica(&$elemento1$chiave$prefisso
{
    
$elemento1 "$prefisso: $elemento1";
}

function 
stampa($elemento2$chiave
{
    echo 
"$chiave. $elemento2<br />\n";
}

echo 
"Prima ...:\n";
array_walk($frutta'stampa');

array_walk($frutta'modifica''frutto');
echo 
"... e dopo:\n";

array_walk($frutta'stampa');
?>

Il risultato del programma sarà:

Prima ...:
d. limone
a. arancia
b. banana
c. mela
... e dopo:
d. frutto: limone
a. frutto: arancia
b. frutto: banana
c. frutto: mela

Vedere anche array_walk_recursive(), create_function(), list(), foreach, each(), call_user_func_array() e array_map()