


Explication détaillée de l'utilisation des fonctions de rappel php et des fonctions anonymes
Fonction de rappel et Fonction anonyme
La fonction de rappel et la fermeture ne sont pas étrangères à JS et peuvent les utiliser pour compléter le mécanisme d'événements et effectuer de nombreuses tâches complexes. .opérer. Il n'est pas couramment utilisé en PHP. Aujourd'hui, parlons des fonctions de rappel et des fonctions anonymes en PHP.
Fonction de rappel Le rappel (c'est-à-dire que le rappel reviendra à la fonction principale après avoir été appelé par la fonction principale) fait référence à une référence à un certain bloc de code exécutable qui est transmis à d'autres codes via les paramètres de la fonction. .
L'explication populaire est de passer la fonction en tant que paramètre dans une autre fonction pour l'utiliser ; il existe de nombreuses fonctions en PHP qui "nécessitent des paramètres en tant que fonctions", telles que array_map, usort, call_user_func_array, etc., qu'elles exécutent. la fonction transmise, puis renvoie le résultat directement à la fonction principale. L'avantage est que les fonctions sont pratiques à utiliser comme valeurs et que le code est concis et lisible.
Les fonctions anonymes, comme leur nom l'indique, sont des fonctions sans nom de fonction déterminé. PHP traite les fonctions anonymes et les fermetures comme le même concept (les fonctions anonymes sont également appelées fonctions de fermeture en PHP). Son utilisation, bien entendu, ne peut être utilisée que comme variable.
Il existe quatre façons d'attribuer une fonction à une variable en PHP :
Ce que nous utilisons souvent : la fonction est définie en externe/ou intégrée en PHP, et le nom de la fonction est directement utilisé comme chaîne Les paramètres sont transmis. Remarque : S'il s'agit d'une fonction statique de classe, elle est transmise sous la forme CLASS::FUNC_NAME.
Utilisez create_function($args, $func_code); pour créer une fonction, qui renverra un nom de fonction. $func_code est le corps du code, $args est la chaîne de paramètres, séparée par ',' ;
affectation directe : $func_name = function($arg){statement} ;
utilise directement anonyme. function , définit la fonction directement au niveau du paramètre, sans attribuer de valeurs de variable spécifiques ;
La première méthode est couramment utilisée et ne sera pas mentionnée davantage. La deuxième méthode, similaire à la méthode eval(), est également utilisée ; par PHP La méthode officielle n'est pas recommandée, et sa définition est trop peu intuitive. Je ne l'ai pas utilisée ailleurs sauf pour des tests, et je n'en parlerai pas. Ici, nous nous concentrons sur les troisième et quatrième utilisations ;
Les fonctions créées par ces deux dernières sont appelées fonctions anonymes, c'est-à-dire que les fonctions créées par la troisième méthode d'affectation sont très flexibles et peuvent être référencées. à travers des variables. Vous pouvez utiliser is_callable($func_name) pour tester si cette fonction peut être appelée, ou vous pouvez l'appeler directement via $func_name($var) ; la fonction créée de la quatrième manière est plus similaire à la fonction de rappel dans JS et ne le fait pas. require variable assignation. , utilisé directement ;
Une autre introduction spéciale est le mot-clé use, qui peut être utilisé pour référencer des variables dans la portée parent lors de la définition d'une fonction ; ) { déclaration_fonction} . Parmi eux, $outside_arg est une variable dans la portée parent et peut être utilisée dans function_statement.
Cet usage est utilisé dans la fonction de rappel "le nombre de valeurs de paramètres est déterminé". Par exemple, usort nécessite que la valeur du paramètre $callback soit composée de deux éléments, mais que se passe-t-il si nous devons introduire d'autres paramètres pour affecter le tri ? L'utilisation du mot-clé use() facilite l'introduction d'une nouvelle variable dans $callback pour un usage interne.
array_map/array_filter/array_walk:
Mettez ces trois fonctions ensemble car la logique d'exécution de ces trois fonctions est similaire, similaire au code suivant :
$result = []; foreach($vars as $key=>$val){ $item = callback(); $result[] = $item; } return $result;
Le rappel doit être le suivant :
$callback = function(&$val, $key[, $arg]){ doSomething($val); }
array_walk renvoie si l'exécution a réussi, ce qui est une valeur booléenne. L'ajout d'un symbole de référence à $value peut modifier la valeur $value dans la fonction pour obtenir l'effet de modification du tableau $vars. Étant donné que son $callback nécessite deux paramètres, array_walk ne peut pas transmettre des $callbacks tels que strtolower/array_filter. Si vous souhaitez obtenir des fonctions similaires, vous pouvez utiliser array_map() pour en discuter ensuite.
array_walk_recursive($arr, $callback);
La valeur de retour et le mécanisme d'exécution sont similaires à array_walk;
Le rappel est le même que array_walk, mais la différence est que si $val est un tableau, la fonction traitera récursivement $val vers le bas ; il convient de noter que dans ce cas, $val est la clé $ du tableau et sera ignorée.
array_filter($vars, $callback, $flag);
son $callback est similaire à :
$callback = function($var){ return true or false; }
array_filter filtrera $callback et retournera false lorsque éléments exécutés, array_filter renvoie le tableau une fois le filtrage terminé.
Le troisième paramètre $flag détermine la valeur de son paramètre de rappel $var, mais cela peut être une fonctionnalité des versions supérieures de PHP. Mon PHP5.5.3 ne le supporte pas. Vous pouvez le tester vous-même. Par défaut, la valeur de chaque élément du tableau est transmise. Lorsque l'indicateur est ARRAY_FILTER_USE_KEY, la clé de chaque élément du tableau est transmise et ARRAY_FILTER_USE_BOTH est transmise dans la clé et la valeur
array_map ; ($callback, &$var_as [,$var_bs...] );
Le $callback est similaire à :
$callback = function($var_a[, $var_b...]){ doSomething($var_a, $var_b); }
Renvoyer le tableau $var_as après le traitement du rappel (modifiera le tableau d'origine); s'il y a plusieurs tableaux, deux éléments du tableau dans le même ordre sont transmis pour le traitement, et le nombre d'exécutions est le nombre maximum d'éléments dans le tableau de paramètres
;usort/array_reduce
把这两个函数放在一块,因为他们的执行机制都有些特殊。
usort(&$vars, $callback)
$callback应该如下:
callback = function($left, $right){ $res = compare($left, $right); return $res; }
usort返回执行成功与否,bool值。用户自定义方法 比较$left 和 $right,其中$left和$right是$vars中的任意两项;
$left > $right时返回 正整数, $left < $right时返回 负整数, $left = $right时返回0;
$vars中的元素会被取出会被由小到大升序排序。 想实现降序排列,将$callback的返回值反一下就行了。
array_reduce($vars ,$callable [, mixed $initial = NULL])
$callback应该如下:
$callback = function($initial, $var){ $initial = calculate($initail, $var); return $initial; }
初始值$initial默认为null,返回经过迭代后的initial;一定要将$initial返回,这样才能不停地改变$initial的值,实现迭代的效果。
这里顺便说一下map和reduce的不同:
map:将数组中的成员遍历处理,每次返回处理后的一个值,最后结果值为所有处理后值组成的多项数组;
reduce:遍历数组成员,每次使用数组成员结合初始值处理,并将初始值返回,即使用上一次执行的结果,配合下一次的输入继续产生结果,结果值为一项;
call_user_func/call_user_func_array
call_user_func[_array]($callback, $param)
$callback形如:
$callback = function($param){ $result = statement(); return $result; }
返回值多种,具体看$callback。
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
