PHP Application d'une fonction à chaque élément d'un tableau


Exemple

Pour appliquer une fonction à chaque élément d'un tableau, utilisez array_map() . Cela retournera un nouveau tableau.

$array = array(1,2,3,4,5);
//each array item is iterated over and gets stored in the function parameter.
$newArray = array_map(function($item) {
    return $item + 1;
}, $array);

$newArray est maintenant array(2,3,4,5,6); .

Au lieu d'utiliser une fonction anonyme , vous pouvez utiliser une fonction nommée. Ce qui précède pourrait être écrit comme:

function addOne($item) {
    return $item + 1;
}

$array = array(1, 2, 3, 4, 5);
$newArray = array_map('addOne', $array);

Si la fonction nommée est une méthode de classe, l'appel de la fonction doit inclure une référence à un objet de classe auquel la méthode appartient:

class Example {
    public function addOne($item) {
        return $item + 1;
    }

    public function doCalculation() {
        $array = array(1, 2, 3, 4, 5);
        $newArray = array_map(array($this, 'addOne'), $array);
    }
}

Un autre moyen d'appliquer une fonction à chaque élément d'un tableau est array_walk() et array_walk_recursive() . Le rappel transmis à ces fonctions prend à la fois la clé / l'index et la valeur de chaque élément du tableau. Ces fonctions ne renverront pas un nouveau tableau, mais un booléen pour le succès. Par exemple, pour imprimer chaque élément d'un tableau simple:

$array = array(1, 2, 3, 4, 5);
array_walk($array, function($value, $key) {
    echo $value . ' ';
});
// prints "1 2 3 4 5"

Le paramètre value du rappel peut être transmis par référence, ce qui vous permet de modifier la valeur directement dans le tableau d'origine:

$array = array(1, 2, 3, 4, 5);
array_walk($array, function(&$value, $key) {
    $value++;
});

$array maintenant est un array(2,3,4,5,6);

Pour les tableaux imbriqués, array_walk_recursive() ira plus loin dans chaque sous-tableau:

$array = array(1, array(2, 3, array(4, 5), 6);
array_walk_recursive($array, function($value, $key) {
    echo $value . ' ';
});
// prints "1 2 3 4 5 6"

Remarque : array_walk et array_walk_recursive vous permettent de modifier la valeur des éléments du tableau, mais pas les clés. Passer les clés par référence dans le rappel est valide mais n'a aucun effet.