Was ist der Unterschied zwischen PHP Echo und PHP Return im Klartext?

Lesezeit: 7 Minuten

Was ist der Unterschied zwischen PHP Echo und PHP Return
Joe Morales

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

Meinem Verständnis nach:

echo = zeigt das Endergebnis einer Funktion

return = gibt den Wert einer Funktion zurück

Ich habe beides angewendet echo und return In den folgenden Funktionen kann ich den Unterschied oder die “Effektivität” der Verwendung nicht erkennen return anstatt echo.

<?php
echo "<h1 style="font-family:Helvetica; color:red">Using <em>echo</em></h1>";
function add1($x, $y){
    $total = $x + $y;
    echo $total;
}
echo "<p>2 + 2 = ", add1(2, 2), "</p>";

echo "<h1 style="font-family:Helvetica; color:red">Using <em>return</em></h1>";
function add2($x, $y){
    $total = $x + $y;
    return $total;
}
echo "<p>2 + 2 = ", add2(2, 2), "</p>";

?>

Beide zeigen das Ergebnis an! Was verstehe ich nicht?

  • Ich denke, die Definition von echo ist Output one or more stringsdiese Definition selbst ist klar genug Quelle: php.net/manual/en/function.echo.php

    – ianace

    22. Februar 2012 um 2:21 Uhr


  • Ich denke immer an die “return”-Anweisung als eine Möglichkeit, Daten zu exportieren, damit sie wiederverwendet werden können. Zurückgegebene Daten werden in ihrem “rohen” Format geliefert. Wie bei „Echo“ sind die Daten immer eine Zeichenfolge (gerade Zahlen), da sie auf den Computermonitor (oder Bildschirm) abzielen, der nur Zeichenfolgenwerte akzeptiert.

    – Toni

    26. September 2017 um 11:56 Uhr

Was ist der Unterschied zwischen PHP Echo und PHP Return
jprofitt

Ich werde eine völlig nicht-technische Antwort darauf geben.

Nehmen wir an, es gibt ein Mädchen namens Sally Function. Du willst wissen, ob sie dich mag oder nicht. Da Sie also in der Grundschule sind, entscheiden Sie sich, Sally eine Notiz zu geben (rufen Sie die Funktion mit Parametern auf), in der Sie sie fragen, ob sie Sie mag oder nicht. Was Sie jetzt tun möchten, ist, sie das zu fragen und dann allen zu erzählen, was sie Ihnen sagt. Stattdessen fragst du sie und dann Sie erzählt allen. Dies ist gleichbedeutend mit dem Zurückgeben (Sie erhalten die Informationen und tun etwas damit) im Vergleich zu ihrem Echo (es allen zu sagen, ohne dass Sie die Kontrolle haben).

In Ihrem Fall passiert das, wenn Sally echos sie nimmt dir die Kontrolle ab und sagt: “Ich werde das den Leuten jetzt sagen”, anstatt dass du ihre Antwort nehmen und damit tun kannst, was du wolltest. Das Endergebnis ist jedoch, dass Sie es den Leuten gleichzeitig erzählten, da Sie das wiederholten, was sie bereits wiederholt hatte, aber nicht antwortete (sie unterbrach Sie mittendrin Sie deiner Klasse sagen, ob sie dich mag oder nicht)

  • Einfacher hätte man es nicht erklären können! Obwohl ich immer noch ein bisschen Schwierigkeiten habe zu verstehen, warum ich nicht einfach innerhalb der Funktion echoen und dann die Funktion echoen kann, verstehe ich dank Ihrer Analogie, was hinter den Kulissen zwischen echo und return passiert: D

    – Joe Morales

    22. Februar 2012 um 15:18 Uhr

  • Überlegen Sie, ob Sie die Ergebnisse in Variablen speichern möchten, damit Sie sie später verwenden können. Wenn Ihre Funktion echos statt returning, erhalten Sie nicht wirklich etwas, das Sie in der Variablen speichern können.

    – jprofitt

    22. Februar 2012 um 15:43 Uhr

  • Ach ich verstehe!!!! Ich glaube, ich kapiere es endlich 😀 … Jetzt muss ich nur noch wissen, warum die Ergebnisse so ausfallen echo und return könnte anders sein lol (siehe Post von @Aron Cederholm unten) Vielen Dank jprofitt — ich weiß deine Hilfe zu schätzen!

    – Joe Morales

    22. Februar 2012 um 16:10 Uhr


  • Was ist eine bessere Programmierpraxis zu verwenden echo oder return in PHP-Funktionen? Was ist sicherer?

    – csandreas1

    13. März 2018 um 14:10 Uhr

1646631250 86 Was ist der Unterschied zwischen PHP Echo und PHP Return
Mathias R. Jessen

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 lautet:

HelloGoodbye

Die eigentliche Ausgabe ist:

GoodbyeHello

Der Grund dafür ist, dass “Goodbye” als Ausgabe echo’ed (geschrieben) wird, sobald die Funktion aufgerufen wird. “Hallo” wird dagegen an die zurückgegeben $hello Variable. der $goodbye ist eigentlich leer, da die goodbye-Funktion nichts zurückgibt.

1646631250 107 Was ist der Unterschied zwischen PHP Echo und PHP Return
BadHorsie

Wie ich sehe, posten Sie immer noch Kommentare, die darauf hindeuten, dass Sie verwirrt sind, weil Sie den Ablauf des Codes nicht verstehen. Vielleicht hilft Ihnen das (insbesondere mit der Antwort von Mathias R. Jessen).

Nehmen Sie also diese beiden Funktionen noch einmal:

function sayHelloLater() {
    return 'Hello';
}

function sayGoodbyeNow() {
    echo 'Goodbye';
}

Nun, wenn Sie dies tun:

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

echo $hello;
echo $goodbye;

Auf Ihrem Bildschirm wird „GoodbyeHello“ angezeigt.

Hier ist der Grund. Der Code wird wie folgt ausgeführt:

$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.

  • Danke hat es gut erklärt

    – Matt

    29. November 2015 um 14:32 Uhr

1646631250 168 Was ist der Unterschied zwischen PHP Echo und PHP Return
Aron Cederholm

mit return die Funktion selbst kann wie eine Variable behandelt werden.

Damit

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

wird ausgeben:

25

während

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

wird ausgeben:

5
20
0

Da es keine gibt result von add2. Was es tut, ist nur ein Echo. Niemals einen Wert an den aufrufenden Code zurückgeben.

Btw, du bist nicht dumm. Du bist nur ein Anfänger. Wir alle sind am Anfang Anfänger, und es gibt eine gewisse Schwelle, die Sie am Anfang überwinden müssen. Sie werden am Anfang wahrscheinlich viele “dumme” Fragen haben, aber versuchen Sie es einfach weiter und vor allem Experimentund du wirst lernen.

Im Grunde sollten Sie also Echo verwenden, wenn Sie etwas an den Browser ausgeben möchten, und Return verwenden, wenn Sie das Skript oder die Funktion beenden und Daten an einen anderen Teil Ihres Skripts übergeben möchten.

  • Damit ist die Frage nicht beantwortet.

    – Egor Rogov

    22. November 2015 um 18:59 Uhr

Was ist der Unterschied zwischen PHP Echo und PHP Return
Alex

Der Unterschied zwischen der Antwort einer Funktion 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 .

  • Damit ist die Frage nicht beantwortet.

    – Egor Rogov

    22. November 2015 um 18:59 Uhr

1646631252 339 Was ist der Unterschied zwischen PHP Echo und PHP Return
sandeep_kosta

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

1) return gibt nur den Wert einer Funktion zurück, um ihn später nach dem Speichern in einer Variablen zu verwenden, aber echo gibt einfach den Wert aus, wenn Sie die Funktion aufrufen, und gibt nichts zurück.

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"; 

}

963200cookie-checkWas ist der Unterschied zwischen PHP Echo und PHP Return im Klartext?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy