PHP の匿名再帰関数
PHP では、ラムダ関数としても知られる匿名関数の概念が、次の関数を定義する便利な方法を提供します。正式な名前を指定せずに関数をインラインで実行します。ただし、再帰に関しては、匿名関数は特有の課題に直面します。
問題:
再帰的匿名関数を作成しようとすると、関数名が再帰に正しく渡されません。この問題は、定義された名前を持つ通常の関数とは異なり、匿名関数にはそれ自体への参照がないために発生します。
解決策:
この問題を解決するには、次のように渡す必要があります。 use ステートメント内の参照としての匿名関数。これは、次のコードに示すように、関数名の前にアンパサンド (&) を追加することで実現できます。
<code class="php">$factorial = function( $n ) use ( &$factorial ) { if( $n <= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 ); // Output: 120</code>
匿名関数を参照として渡すことで、再帰呼び出しと関数間の接続を確立します。元の関数定義を使用して、関数自身の内部状態にアクセスできるようにします。これにより、再帰が期待どおりに機能し、階乗値を正常に計算できるようになります。
以上が## PHP で再帰匿名関数を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。