Dans PHP, la fonction array_map () est une fonction très utile qui applique une fonction de rappel à chaque élément d'un tableau et renvoie un nouveau tableau contenant les éléments traités par la fonction de rappel. Cela le rend très efficace et pratique lors de la gestion des tableaux de nombres, des tableaux de chaînes et même du mélange de tableaux. Dans cet article, nous analyserons en détail comment utiliser la fonction array_map () pour convertir des éléments dans un tableau numérique.
<span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> ...</span><span><span class="hljs-variable">$arrays</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
$ rappel : une fonction de rappel qui sera appliquée à chaque élément du tableau. Cette fonction de rappel peut être une fonction anonyme, une fonction intégrée ou une fonction définie par l'utilisateur.
$ Array : le premier tableau à traiter, qui peut être un tableau de tout type.
$ Arrays : S'il y a plusieurs tableaux en tant que paramètres, leurs éléments seront transmis à la fonction de rappel un par un.
Supposons que nous ayons un tableau contenant des entiers et que nous souhaitions utiliser array_map () pour retourner un nouveau tableau, et chaque élément du tableau est le carré de l'élément correspondant dans le tableau d'origine.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];
</span><span><span class="hljs-variable">$squaredNumbers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$number</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span> * </span><span><span class="hljs-variable">$number</span></span><span>;
}, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squaredNumbers</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Résultat de sortie:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">9</span></span><span>
[</span><span><span class="hljs-number">3</span></span><span>] => </span><span><span class="hljs-number">16</span></span><span>
[</span><span><span class="hljs-number">4</span></span><span>] => </span><span><span class="hljs-number">25</span></span><span>
)
</span></span>
Dans cet exemple, nous stimulons chaque numéro avec une fonction anonyme et utilisons array_map () pour renvoyer un nouveau tableau.
array_map () peut non seulement utiliser des fonctions anonymes, mais également utiliser des fonctions intégrées en php. Par exemple, nous pouvons utiliser la fonction SQRT () pour calculer la racine carrée de chaque nombre.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">9</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>, </span><span><span class="hljs-number">25</span></span><span>];
</span><span><span class="hljs-variable">$squareRoots</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'sqrt'</span></span><span>, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squareRoots</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Résultat de sortie:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-number">3</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-number">4</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
)
</span></span>
Dans cet exemple, nous passons directement dans la fonction SQRT , et Array_Map () appellera automatiquement la fonction pour chaque élément du tableau.
array_map () prend également en charge le traitement de plusieurs tableaux simultanément. Dans ce cas, la fonction de rappel recevra l'élément correspondant de chaque tableau. Par exemple, supposons que nous ayons deux tableaux qui stockent deux ensembles de nombres, et nous voulons ajouter ces nombres:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>];
</span><span><span class="hljs-variable">$sumArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$a</span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$a</span></span><span> + </span><span><span class="hljs-variable">$b</span></span><span>;
}, </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$sumArray</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Résultat de sortie:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">7</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">9</span></span><span>
)
</span></span>
Dans cet exemple, nous passons deux tableaux à array_map () , ce qui les ajoute par élément par élément, renvoyant un nouveau tableau.
Il convient de noter que Array_Map () perdra le nom clé du tableau d'origine. Si vous souhaitez conserver le nom de la clé, vous pouvez utiliser le résultat de retour sur array_map () en conjonction avec array_keys () , ou conserver manuellement le nom de la clé. Cependant, array_map () lui-même ne conserve pas le nom de clé du tableau d'origine pour nous.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$numbers</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">2</span></span><span> => </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">3</span></span><span> => </span><span><span class="hljs-number">30</span></span><span>];
</span><span><span class="hljs-variable">$squaredNumbers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$number</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span> * </span><span><span class="hljs-variable">$number</span></span><span>;
}, </span><span><span class="hljs-variable">$numbers</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$squaredNumbers</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Résultat de sortie:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => </span><span><span class="hljs-number">100</span></span><span>
[</span><span><span class="hljs-number">1</span></span><span>] => </span><span><span class="hljs-number">400</span></span><span>
[</span><span><span class="hljs-number">2</span></span><span>] => </span><span><span class="hljs-number">900</span></span><span>
)
</span></span>
Comme indiqué ci-dessus, le nom de clé a été réinitialisé au formulaire de tableau d'index. Si vous souhaitez préserver le nom de clé, vous pouvez envisager de combiner array_map () et d'autres fonctions de manipulation de la table.
array_map () est une fonction de fonctionnement de tableau efficace qui convertit chaque élément d'un tableau.
Vous pouvez passer n'importe quelle fonction de rappel valide (fonctions anonymes ou intégrées) pour gérer les éléments dans un tableau.
array_map () permet de traiter plusieurs tableaux simultanément et la fonction de rappel obtiendra les éléments à la position correspondante dans chaque tableau.
Cette fonction ne conserve pas le nom de clé du tableau d'origine, de sorte que une autre assistance de fonction peut être prise en compte lorsque des opérations supplémentaires sont nécessaires.
En maîtrisant Array_Map () , vous pouvez améliorer la simplicité et la lisibilité de votre code lors du traitement des tableaux et est un outil très courant et puissant.
Étiquettes associées:
array_map