2016-03-24 8 views
1

zugewiesen ist. Unten ist das Beispiel, das ich zusammengestellt habe, um meine Verwirrung zu verstehen. Nun meine Frage ist, wenn ich die Funktion in eine lokale Variable mache, beginnt es sofort zu laufen oder wartet auf den Aufruf der lokalen Variablen.Funktioniert die Funktion, wenn sie der lokalen Variablen

//Here is the function 
function myFunction(){ 
    return 'Hello Stackoverflow'; 
} 

//Does the functio run at this point 
$stackoverflow = myFunction(); 

//Or does the function run here? 
echo $stackoverflow; 

Antwort

9

Sie sind nicht zu machen „um die Funktion in eine lokale Variable.“

In Ihrem Beispiel wird die Funktion ausgeführt, der Rückgabewert der Zeichenfolge wird $ stackoverflow zugewiesen, und Sie geben die Zeichenfolge zurück.

Ich denke, Sie versuchen, dies zu tun.

//Here is the function 
function myFunction(){ 
    return 'Hello Stackoverflow'; 
} 

//Doesn't run yet 
$stackoverflow = 'myFunction'; 

//This runs now 
echo $stackoverflow(); 
+0

Jetzt das ist großartig. Prost! –

+1

Ja, das ist wahrscheinlich das, was das OP wirklich meinte, –

1

Die Funktion laufen, wenn es auf einen Wert zugewiesen wird, das heißt, bei $stackoverflow = myFunction();

3

Sie weisen der Variablen nicht tatsächlich eine Funktion zu, sondern den Rückgabewert der Funktion.

Und ja, die Funktion wird ausgeführt, wenn Sie es aufrufen, d. H. Wenn Sie es der Variablen zuweisen.

Danach haben Sie natürlich eine Variable mit einem Wert und Sie können damit machen, was Sie wollen.

+1

Um das klarzustellen, wird die Funktion tatsächlich ausgeführt, wenn sie aufgerufen wird (mit der '()' -Syntax), unabhängig davon, ob sie einer Variablen zugewiesen ist oder nicht. In diesem Fall geschieht dies in der gleichen Anweisung wie die Variablenzuweisung. –

+1

@CarlGroner Sie sind völlig richtig, aber ich bezog sich auf den OP-Code. –

1

Es wird zum Zeitpunkt der Zuweisung auszuführen:

$stackoverflow = myFunction(); 

Sie könnten die Funktion der Variablen zuweisen, wenn Sie es wollen, aufgerufen, wenn die Variable referenzieren und nicht, wenn es zugewiesen:

$foo = function() { 
    return 'Hello Stackoverflow'; 
}; 

echo $foo(); 
+0

Nein, ich glaube nicht, dass du das kannst, zumindest bis PHP 5.6. –

+0

Perfekt gültig vor 5.6, anonyme Funktionen (Verschlüsse) wurden in 5.3.0 eingeführt –

+0

@MarkBaker Sie haben Recht und ich stehe richtig. Danke, dass du darauf hingewiesen hast. –

Verwandte Themen