Was ist der Unterschied zwischen PHP Echo und PHP Return in Plain English?

Ja, ich habe diese Frage gegoogelt und mich sogar auf mein Lehrbuch (PHP von Don Gosselin) bezogen, aber ich kann die Erklärung im Grunde nicht verstehen.

Meinem Verständnis nach:

echo = zeigt das Endergebnis einer function an

return = gibt den Wert einer function zurück

Ich habe sowohl echo als auch return in den folgenden functionen angewendet. Ich kann den Unterschied oder die “Effektivität” der Verwendung von return anstelle von echo .

 <?php echo "

Using echo

"; function add1($x, $y){ $total = $x + $y; echo $total; } echo "

2 + 2 = ", add1(2, 2), "

"; echo "

Using return

"; function add2($x, $y){ $total = $x + $y; return $total; } echo "

2 + 2 = ", add2(2, 2), "

"; ?>

Beide zeigen das Ergebnis! Was verstehe ich nicht?

Ich werde hier eine völlig nicht technische Antwort geben.

Nehmen wir an, es gibt ein Mädchen namens Sally Function. Du willst wissen, ob sie dich mag oder nicht. Da du in der Grundschule bist, beschließt du, Sally eine Notiz zu geben (rufe die function mit Parametern an) und fragst sie, ob sie dich mag oder nicht. Was du jetzt vorhast, ist, sie zu fragen und dann allen zu erzählen, was sie dir sagt. Stattdessen fragst du sie und dann sagt sie allen. Das ist gleichbedeutend mit der Rückkehr (du bekommst die Information und tust etwas damit) gegen ihr Echo (erzähle jedem, ohne dass du irgendeine Kontrolle hast).

In deinem Fall ist es so, dass Sally, wenn sie die Kontrolle von dir übernimmt und sagt: “Ich werde es den Leuten jetzt sagen”, anstatt dass du ihre Antwort nehmen und tun kannst, was du tun wolltest es. Das Endergebnis ist jedoch, dass du den Leuten zur gleichen Zeit erzählt hast, seit du geantwortet hast, was sie bereits geantwortet hat, aber nicht zurückgekehrt ist (sie hat dich in deiner Mitte abgeschnitten, wenn sie dich mochte oder nicht)

Folgendes berücksichtigen:

 < ?php function sayHelloLater(){ return "Hello"; } function sayGoodbyeNow(){ echo "Goodbye"; } $hello = sayHelloLater(); // "Hello" returned and stored in $hello $goodbye = sayGoodbyeNow(); // "Goodbye" is echo'ed and nothing is returned echo $hello; // "Hello" is echo'ed echo $goodbye; // nothing is echo'ed ?> 

Sie könnten erwarten, dass die Ausgabe wie folgt aussieht:

 HelloGoodbye 

Die tatsächliche Ausgabe ist:

 GoodbyeHello 

Der Grund ist, dass “Goodbye” als Ausgabe gechattet (geschrieben) wird, sobald die function aufgerufen wird. “Hello” wird andererseits an die Variable $hello . der $goodbye ist eigentlich leer, da die tschüss-funktion nichts zurückgibt.

Ich sehe, dass Sie immer noch Kommentare schreiben, die darauf hindeuten, dass Sie verwirrt sind, weil Sie den Fluss des Codes nicht verstehen. Vielleicht hilft Ihnen das (insbesondere mit Mathias R. Jessens Antwort ).

Nimm diese zwei functionen wieder:

 function sayHelloLater() { return 'Hello'; } function sayGoodbyeNow() { echo 'Goodbye'; } 

Nun, wenn Sie das tun:

 $hello = sayHelloLater(); $goodbye = sayGoodbyeNow(); echo $hello; echo $goodbye; 

Sie werden mit ‘GoodbyeHello’ auf Ihrem Bildschirm verlassen.

Hier ist der Grund. Der Code wird so laufen:

 $hello = sayHelloLater(); ---->-------->-------->------->------>-- ¦ ¦ ^ ¦ ¦ ¦ Call the function v ¦ ¦ ¦ ^ ¦ ¦ ¦ v ¦ v "return" simply sends back function sayHelloLater() { ¦ 'Hello' to wherever the < ----<---- return 'Hello'; ¦ function was called. } v Nothing was printed out ¦ (echoed) to the screen yet. ¦ v $hello variable now has whatever value the sayHelloLater() function returned, so $hello = 'Hello', and is stored for whenever you want to use it. ¦ ¦ v ¦ ¦ v $goodbye = sayGoodbyeNow(); ---->-------->-------->------->------ ¦ ¦ ^ ¦ ¦ ¦ Call the function v ¦ ¦ ¦ ^ ¦ ¦ ¦ v ¦ ¦ v ¦ function sayGoodbyeNow() { ¦ echo 'Goodbye'; ¦ The function didn't return } ¦ anything, but it already v printed out 'Goodbye' ¦ ¦ v ¦ ^ ¦ ¦ "echo" actually prints out v < -----------<-----------<--------- the word 'Goodbye' to ¦ the page immediately at ¦ this point. ¦ v Because the function sayGoodbyeNow() didn't return anything, the $goodbye variable has a value of nothing (null) as well. ¦ ¦ ¦ v ¦ ¦ ¦ v echo $hello; -------->-------> Prints 'Hello' to the screen at this point. So now your screen says ¦ 'GoodbyeHello' because 'Goodbye' was ¦ already echoed earlier when you called ¦ the sayGoodbyeNow() function. v echo $goodbye; ------>-------> This variable is null, remember? So it echoes nothing. ¦ ¦ ¦ v And now your code is finished and you're left with 'GoodbyeHello' on your screen, even though you echoed $hello first, then $goodbye. 

Bei return die function selbst wie eine Variable behandelt werden.

Damit

 return add1(2, 3) + add1(10, 10); 

wird ausgegeben:

 25 

während

 echo add2(2, 3) + add2(10, 10); 

wird ausgegeben:

 5 20 0 

Da gibt es kein result von add2. Was es tut, ist nur Echo Zeug. Niemals einen Wert an den Code zurückgeben, der ihn aufgerufen hat.

Übrigens, du bist nicht dumm. Du bist nur ein Anfänger. Wir sind alle Anfänger am Anfang und es gibt eine bestimmte Schwelle, die du am Anfang überwinden musst. Sie werden wahrscheinlich am Anfang viele “dumme” Fragen haben, aber versuchen Sie weiter und vor allem experimentieren Sie , und Sie werden lernen.

Im Grunde genommen sollten Sie Echo immer dann verwenden, wenn Sie etwas an den Browser ausgeben möchten, und return verwenden, wenn Sie das Skript oder die function beenden und Daten an einen anderen Teil Ihres Skripts weitergeben möchten.

Es gibt ein paar Unterschiede, die ich nach dem Testen gefunden habe

1) zurückgeben Sie einfach den Wert einer function, um es später zu verwenden, nachdem Sie es in einer Variablen gespeichert haben, aber Echo einfach drucken Sie den Wert, wie Sie die function aufrufen und nichts zurückgibt.

Hier ist das kurze Beispiel dafür

function myfunc() { echo "i am a born programmer"; }

 $value = myfunc(); \\ it is going to print the 'i am a born programmer' as function would be called if(empty($value)===true) { echo "variable is empty because function returns nothing"; 

}

Der Unterschied zwischen der Antwort einer function besteht darin, dass “echo” etwas an den Browser (DOM) sendet, während “return” etwas an den Aufrufer zurückgibt.

 function myFunction( return 5; } $myVar= myFunction(); //myVar equals 5 echo $myVar; // will show a "5 " on the screen function myFunction() { echo 5; } $myVar= myFunction(); // myVar equals 0, but the screen gets a "5" echo $myVar; // a zero on the screen next to "5" printed by function appears . 

Verwenden Sie eine kleine Modifikation Ihres Beispiels:

 < ?php echo "

Using echo"; function add1($x, $y){ $total = $x + $y; echo $total; } $result = add1(2, 2); echo "

2 + 2 = ", $result, "

"; echo "

Using return

"; function add2($x, $y){ $total = $x + $y; return $total; } $result = add2(2, 2); echo "

2 + 2 = ", $result, "

"; ?>

Kannst du den Unterschied sehen?

echo rendert den Text usw. in das Dokument, gibt Daten von einer function / Methode usw. an das zurück, was sie aufgerufen hat. Wenn Sie eine Rückgabe zurückgeben, wird sie gerendert (vorausgesetzt, es ist Text / Nummer usw. – kein Objekt usw.).

Hinter den beiden functionen steht eine Zeile, die die Ausgabe umschaltet:

 echo "

2 + 2 = ", add1(2, 2), "

"; echo "

2 + 2 = ", add2(2, 2), "

";

echo den Wert aus, damit Sie ihn lesen können. return gibt den Wert zurück, in dem beispielsweise Variablen gespeichert werden sollen.

 $result = add2(2, 2); // do more with result ... ? // output the result echo $result; 

Um PHP in HTML auszugeben, sollten wir grundsätzlich echo verwenden. Mit anderen Worten, wir müssen es wiederholen.

Diese zwei Beispiele unten geben ein klares Verständnis:

 function myfunction() { // script content here, and sample out maybe like this : return $result; ---> sample 1 echo $result; ---> sample 2 } 

um $ result in html für jedes Beispiel anzuzeigen:

Für Beispiel 1 sollten wir < ?php echo $result ?>

Für Beispiel 2 sollten wir < ?php $result ?>

Auf Sample 2 müssen wir es nicht wiederholen, weil wir es in der function haben.

Eine Sache, die ich gelernt habe, während ich Änderungen an Buddypress vorgenommen habe, ist, dass sie den Return hauptsächlich auf verschachtelten corefunktionen verwendet und dann mit der Verwendung von sprintf dynamische Variablen in den HTML bindet und diesen Chunk von html zurück an die Hauptfunktion zurückgibt, wo er aufgerufen wurde und nur dann hallt es einmal bei der Hauptfunktion aus. Dadurch wird der Code modular und einfacher zu debuggen.

Der wichtigste Unterschied zwischen echo und return meiner Meinung nach:
der Datentyp des Ergebnisses für jeden einzelnen.
wenn wir einige functionen wie folgt schreiben:

 < ?php $value = 150; function firstFunction($value) { return $value + 1; } echo firstFunction($value) . '
'; function secondFunction($value) { echo $value + 1; } secondFunction($value);

und ja, beide geben uns 151 als Ausgabewert.
Im return werden wir firstFunction($value) als int Datentyp firstFunction($value) .
Andernfalls werden wir im secondFunction($value) als NULL Datentyp secondFunction($value) .
Sie können versuchen, jedes mit var_dump() function zu var_dump() zu verstehen, was ich meinte.

 < ?php var_dump(firstFunction($value)); ?> 
< ?php var_dump(secondFunction($value));

Dieser Unterschied kommt uns zugute, wenn wir einige Werte behandeln, die aus databaseen zurückkommen, insbesondere in den mathematischen Operationen wie (Post Views) oder so ähnlich.
Das wird Sinn machen über das, was hier geschrieben wurde.
Ich hoffe, ich habe es auf einfache Weise erklärt.