Maison >développement back-end >tutoriel php >Exemple d'analyse d'appel automatique PHP (récursif) basée sur la fonction d'implémentation de fermeture

Exemple d'analyse d'appel automatique PHP (récursif) basée sur la fonction d'implémentation de fermeture

黄舟
黄舟original
2017-02-24 09:21:461823parcourir

L'exemple de cet article décrit comment PHP implémente l'auto-appel (récursion) de fonctions basées sur des fermetures. Je le partage avec vous pour votre référence, comme suit :

Les fermetures PHP ne sont peut-être pas couramment utilisées, mais dans certaines situations, vous pouvez toujours envisager d'utiliser des fermetures PHP pour implémenter certaines fonctions, telles que la récursivité, ici Parlons-en utiliser des fermetures PHP pour implémenter la récursion

//php闭包实现函数的自调用,也就是实现递归
function closure($n,$counter,$max){
  //匿名函数,这里函数的参数加&符号是,引址调用参数自己
  $fn = function (&$n,&$counter,&$max=1) use(&$fn){//use参数传递的是函数闭包函数自身
    $n++;
    if($n < $max){//递归点,也就是递归的条件
      $counter .=$n.&#39;<br />&#39;;
      //递归调用自己
      $fn($n,$counter,$max);
    }
    return $counter;
  };//记得这里必须加``;``分号,不加分号php会报错,闭包函数
  /*
  *这里函数closure的返回值就是调用闭包的匿名函数
  *而闭包函数,引用closure函数传进来的参数
  */
  return $fn($n,$counter,$max);
}
echo (closure(0,&#39;&#39;,10));



Il s'agit d'une fonction simple qui utilise des fermetures PHP pour implémenter la récursion. En fait, si nous le faisons avec un léger. modification de la fonction, de nombreuses fonctions peuvent être réalisées, comme une classification infinie.

Concernant la fonction de fermeture à l'intérieur, en effet, nous n'avons pas besoin de nous référer aux paramètres de fermeture externes, nous pouvons définir les paramètres de la fonction de fermeture à l'intérieur de la fermeture.

Nous n'avons pas besoin de renvoyer la valeur de la fonction de fermeture, car la fonction de fermeture est à l'intérieur de la fonction de fermeture. Nous pouvons définir des variables dans la fonction de fermeture et les transmettre à la fonction de fermeture, puis utiliser la fermeture. pour obtenir récursivement ce que nous voulons.Les éléments souhaités sont stockés dans le tableau, puis la fonction de fermeture est utilisée pour renvoyer les éléments obtenus par la fonction de fermeture.Par conséquent, la fonction de fermeture peut également n'avoir aucune valeur de retour. vouloir obtenir.

En bref, il vous suffit d'utiliser cette fonction de fermeture pour obtenir ce que vous voulez, puis de renvoyer ce dont vous avez besoin. Elle ne doit pas nécessairement être obtenue à partir de la valeur de retour de la fonction de fermeture.


Ce qui précède est le contenu de l'exemple d'analyse auto-appelant (récursif) de la fonction d'implémentation basée sur la fermeture PHP. Pour plus de contenu connexe, veuillez faire attention au chinois PHP. site Internet (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn