Heim  >  Artikel  >  Backend-Entwicklung  >  ## Können PHP-Funktionen sowohl rekursiv als auch anonym sein?

## Können PHP-Funktionen sowohl rekursiv als auch anonym sein?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 02:08:28323Durchsuche

## Can PHP Functions Be Both Recursive and Anonymous?

Anonyme rekursive Funktionen in PHP implementieren

Wenn man sich an die Aufgabe macht, rekursive Funktionen in PHP zu erstellen, möchte man sie vielleicht mit Anonymität verschleiern . Allerdings birgt der Versuch, den Funktionsnamen als Argument an sich selbst zu übergeben, eine Gefahr, wie im folgenden Code gezeigt.

<code class="php">$factorial = function( $n ) use ( $factorial ) {
    if( $n <= 1 ) return 1;
    return $factorial( $n - 1 ) * $n;
};
print $factorial( 5 );</code>

Dieses Unterfangen wird sich als erfolglos erweisen und Sie mit der Frage zurücklassen: Kann PHP Funktionen sowohl rekursiv als auch anonym sein?

Die Antwort liegt im Verständnis der Mechanismen der Variablenreferenzierung. Um eine rekursive Verbindung herzustellen, muss die Funktion einen Verweis auf sich selbst enthalten. Dies kann erreicht werden, indem die Funktion mit dem Operator „&“ als Referenz übergeben wird. Nachfolgend finden Sie ein Beispiel dafür, wie diese Änderung die anonyme Rekursion entsperren kann:

<code class="php">$factorial = function( $n ) use ( &$factorial ) {
    if( $n == 1 ) return 1;
    return $factorial( $n - 1 ) * $n;
};
print $factorial( 5 );</code>

Mit dieser Anpassung überschreitet die PHP-Funktion die Grenzen der Anonymität und übt nahtlos ihre rekursiven Fähigkeiten aus.

Das obige ist der detaillierte Inhalt von## Können PHP-Funktionen sowohl rekursiv als auch anonym sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn