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
);

Quelle est donc la meilleure façon de faire ?

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.

Bonus : transposer les colonnes d'un tableau en lignes et les lignes en colonnes

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é ^^

Tu aimerais progresser en PHP ? Mais tu ne sais pas comment t'y prendre ?

S'entraîner pour progresser en PHP

Mon programme "S'entraîner pour progresser en PHP" va bientôt ouvrir ses portes. Il te permettra de recevoir chaque semaine un kata de code directement dans ta boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives, voire des live coding et de la review.

Si tu es intéressé(e), clique sur le bouton ci-dessous pour avoir plus d'informations et t'inscrire afin d'être prévenu(e) de l'ouverture de ce programme.