Maison > Article > développement back-end > En quoi array_map, array_walk et array_filter diffèrent-ils dans leur comportement et leur utilisation en PHP ?
Distinguer array_map, array_walk et array_filter en PHP
Bien que array_map, array_walk et array_filter soient toutes des fonctions PHP qui prennent une fonction de rappel comme argument pour effectuer une action sur un tableau, il existe des différences subtiles dans leur comportement et leur utilisation.
Différences clés :
1. Modification des valeurs :
array_map ne peut pas modifier les valeurs dans le tableau d'entrée, alors que array_walk le peut. En effet, array_map crée un nouveau tableau avec les résultats de la fonction de rappel, tandis que array_walk modifie le tableau d'entrée en place.
2. Accès aux clés de tableau :
array_map ne peut pas fonctionner sur les clés de tableau, alors que array_walk le peut. Cela signifie que array_walk peut effectuer des opérations basées à la fois sur les valeurs et les clés du tableau.
3. Valeur de retour :
array_map renvoie un nouveau tableau contenant les résultats de la fonction de rappel, tandis que array_walk renvoie true si la fonction de rappel a été appliquée avec succès à tous les éléments du tableau d'entrée.
4. Itération de plusieurs tableaux :
array_map peut accepter plusieurs tableaux en entrée et les parcourir en parallèle, permettant des opérations sur plusieurs tableaux à la fois. array_walk, en revanche, ne fonctionne que sur un seul tableau.
5. Passage d'arguments de rappel :
array_walk permet de transmettre un paramètre arbitraire supplémentaire à la fonction de rappel, offrant ainsi une flexibilité dans les actions effectuées dans le rappel.
6. Longueur du tableau renvoyé :
array_map produit un tableau de résultats de la même longueur que le plus grand tableau d'entrée. array_walk ne renvoie pas de tableau et ne peut pas modifier le nombre d'éléments dans le tableau d'entrée. array_filter renvoie un sous-ensemble du tableau d'origine en fonction de la fonction de filtrage et préserve les clés d'origine.
Exemple :
Considérez le code suivant :
<code class="php">$a1 = array(2.4, 2.6, 3.5); $a2 = array(2.4, 2.6, 3.5); array_map('floor', $a1); // $a1 remains unchanged array_walk($a2, function (&$v) { $v = floor($v); }); // modifies $a2</code>
Dans le premier cas, array_map crée un nouveau tableau avec les valeurs plancher de chaque élément dans $a1, mais $a1 lui-même reste inchangé. Dans le second cas, array_walk modifie directement les éléments de $a2 en les arrondissant à l'entier le plus proche.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!