ホームページ >バックエンド開発 >PHPチュートリアル >クロージャ実装関数に基づくPHP自己呼び出し(再帰的)サンプル解析

クロージャ実装関数に基づくPHP自己呼び出し(再帰的)サンプル解析

黄舟
黄舟オリジナル
2017-02-24 09:21:461858ブラウズ

この記事の例では、PHP がクロージャーに基づいて関数の自己呼び出し (再帰) を実装する方法を説明します。参考までに、以下のように共有します:

PHP クロージャーは一般的には使用されないかもしれませんが、場合によっては、再帰などの特定の関数を実装するために php クロージャーの使用を検討できます。ここでは、php クロージャーの使用について説明します。 recursion を実装します

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



これは、PHP クロージャを使用して再帰を実装する単純な関数です。実際、この関数を少し変更すると、無限分類などの多くの関数を実現できます。

内部のクロージャ関数に関しては、実際には、外部のクロージャパラメータを参照する必要はなく、クロージャの内部でクロージャ関数のパラメータを設定できます。

クロージャ関数はクロージャ関数内にあるため、クロージャ関数の値を返す必要はありません。クロージャ内に変数を設定してクロージャ関数に渡し、クロージャを使用して再帰的に取得できます。配列では、クロージャ関数が取得したものを返すために使用されます。したがって、クロージャ関数は取得したい値を持たないこともあります。

つまり、このクロージャー関数を使用して必要なことを達成し、必要なものを返すだけでよく、必ずしもクロージャー関数の戻り値から取得する必要はありません。


上記は、PHP のクロージャーベースの実装関数の自己呼び出し (再帰) サンプル分析の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。