この記事の例では、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.'<br />'; //递归调用自己 $fn($n,$counter,$max); } return $counter; };//记得这里必须加``;``分号,不加分号php会报错,闭包函数 /* *这里函数closure的返回值就是调用闭包的匿名函数 *而闭包函数,引用closure函数传进来的参数 */ return $fn($n,$counter,$max); } echo (closure(0,'',10));
これは、PHP クロージャを使用して再帰を実装する単純な関数です。実際、この関数を少し変更すると、無限分類などの多くの関数を実現できます。
内部のクロージャ関数に関しては、実際には、外部のクロージャパラメータを参照する必要はなく、クロージャの内部でクロージャ関数のパラメータを設定できます。
クロージャ関数はクロージャ関数内にあるため、クロージャ関数の値を返す必要はありません。クロージャ内に変数を設定してクロージャ関数に渡し、クロージャを使用して再帰的に取得できます。配列では、クロージャ関数が取得したものを返すために使用されます。したがって、クロージャ関数は取得したい値を持たないこともあります。
つまり、このクロージャー関数を使用して必要なことを達成し、必要なものを返すだけでよく、必ずしもクロージャー関数の戻り値から取得する必要はありません。
上記は、PHP のクロージャーベースの実装関数の自己呼び出し (再帰) サンプル分析の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。