Transformer les éléments d'un tableau
Si vous souhaitez modifier tous les éléments d'un tableau, vous allez faire habituellement :
$numbers = [0, 1, 2, 3, 4];
$numberByTwo = [];
foreach ($numbers as $number) {
$numberByTwo[] = $number * 2;
}
// $numberByTwo : [0, 2, 4, 6, 8];Mais savez-vous qu'il existe une fonction faite pour ça ? array_map() permet d'appliquer une fonction (callback) sur tous les éléments d'un tableau.
Elle prend en premier argument la fonction à appliquer sur chaque élément et en deuxième argument, le tableau à traiter.
$numberByTwo = array_map(
fn($number) => $number * 2,
$numbers
);La réponse est simple : il n'y a pas de meilleure façon.
J'aime bien utiliser array_map car cette fonction m'évite d'avoir une variable qui "traîne" (déclaration + affectation de chaque valeur). Ici j'ai directement le résultat.
Si j'ai par exemple une fonction qui me fait cette multiplication, alors je n'ai même plus de variable intermédiaire, je peux retourner directement le résultat d'array_map :
function multiplyByTwo(
array $numbers
): array
{
return array_map(
fn($number) => $number * 2,
$numbers
);
}Ca peut paraître un peu compliqué au début, mais on s'y habitue très vite.
Un exemple tout de suite après ce titre un peu barbare. J'ai ce tableau :
$list = [
[0,0,1,0],
[1,1,1,1],
[1,0,1,1],
];et je souhaite que les colonnes deviennent des lignes et vice-versa, et donc arriver à ça :
array (
[0, 1, 1],
[0, 1, 0],
[1, 1, 1],
[0, 1, 1],
)Je peux le faire très simplement avec array_map, en passant comme callback la valeur null et en utilisant comme deuxième argument le spread operator sur le tableau 🤯
array_map(null, ...$list);Ne me remerciez pas, vous pourrez désormais frimer en société ^^
J’ai préparé un guide pratique avec une dizaine de conseils essentiels pour poser de bonnes bases.
👉 Bonnes pratiques, astuces spécifiques à PHP, exemples concrets… tout y est pour prendre de suite les bonnes habitudes.