Was ist denn der Unterschied zwischen
den Funktionen echo und print?

Silke Schümann wrote this 20:46:

Jörg Krause erwähnt den Unterschied, so dass ich diesen verstehe bei den Erläuterungen zur for-Schleife auf Seite 157 in meinem dicken PHP-Buch:

  1. <?PHP
  2. for($i=0; $j=10; $i<$j; $i++, $j--, print "$i<br>");
  3. ?>

Innerhalb des for-Befehls können also weitere Befehle, durch kommata getrennt, eingebaut werden. Im Beispiel wird übrigens nicht zufällig print anstatt des flexibleren echo verwendet.Wie bei der Befehlsbeschreibung bereits erläutert, gibt echo nichts zurück, während print die Ausführung im Erfolgsfall mit True quitiert. Normalerweise wird dieser Rückgabewert weggeworfen. Die for-Schleife erwartet jedoch von jedem direkt eingegebenen WErt, dass er sich als Ausdruck verhält — Ausdrücke geben immer etwas zurück. An dieser Stelle kann echo also nicht funktionieren. Versuchen Sie es dennoch, erhalten Sie einen Laufzeitfehler.

Na das hört sich doch schon ganz gut an und zählt zu den Dingen die man sich auch merken sollte. Und noch etwas werde ich mir mit Sicherheit jetzt merken und immer wieder einsetzen: Ich habe <?=$foo?> foo. als Kurzform für echo.

Und das verstehe ich vielleicht irgendwann später ... *seufz* ... und erklär es dann mal mit meinen Worten. ;-)

One Response to “Was ist denn der Unterschied zwischen
den Funktionen echo und print?”

  1. DonKult Says:

    Falls es tröstet, wirklich verstehen was “das” uns sagen will tue ich auch nicht ;) So weit ich dass verstehe, versucht er auch nicht mehr zu sagen also du bereits erwähnt hast, außer dass er auf die Rangfolge eingeht: Mir fällt leider auf Anhieb kein Programmierbeispiel ein um das zu verdeutlichen, daher leihe ich mir jetzt ein Beispiel aus der Mathematik: Dort gilt ja, dass man Punkt- vor Strichrechnung durchführt: Die Strichrechnung hat also eine niedrigere Priorität beim rechnen. Genauso ist es bei print(). Praktisch brauch man das nicht zu wissen. Stell dir einfach nur mal kurz vor print() würde die höchste Priorität haben: die Anweisung print 1+1; würde dann ja “1+1″ ausgeben anstatt das Ergebnis zu errechnen und “2″ auszugeben. Eine solche Arbeitsweise von print() wäre ja nicht gerade erwünscht, daher die niedrige Priorität.

    Die von dir angegebene Kurzform ist im Hinblick auf XML leider etwas problematisch, die “Gelehrten” (und das Handbuch) streiten sich allerdings darum ob mal es nun vergöttern oder verteufeln werden soll. Kommt wohl doch sehr auf die zukünftige Anwendung des Scriptes an, da Scripts die eine weite Verbreitung erlangen sollen/können doch dazu geneigt sind auf Server zu treffen bei denen diese Option deaktiviert ist ( short_open_tag false ). Auch könnte ich mir vorstellen, dass diese short-tags eines schönen Tages aus PHP rausfliegen, aber vor der Version 7 wird das wohl nicht der Fall sein ;) Aber viel mehr als dadrauf kommt es vorallem auf den eigenen persönlichen Geschmack an. Ist ja auch mal was schön innerhalb eines so festgeschnürrten Syntaxschema die Wahl zu haben… ;)

Leave a Reply