2013-05-23 10 views
6

Das Befehlsecho gibt nichts zurück. Aber Druck liefert 1. Immer. Was ist der praktische Nutzen dieser zurückkehrenden 1? Sicher kann es in einem Ausdruck verwendet werden, aber ist nicht der Ausdruck nutzlos, wenn es immer wahr ist und die Verwendung von mehr Code verursachen?print() gibt immer 1 zurück, gibt es eine praktische Verwendung?

Sollte es nicht immer das gleiche Ergebnis wie unten, also was ist der Punkt dann?

<?php 
print ($empty); 
echo "Yep sure thing. Print strikes again with a ", "1."; 
?> 

Diese Frage geht es um die Rückkehr 1 und nicht das „Echo ermöglicht durch Komma getrennt mehr als eine Zeichenfolge Echo, während Druck nicht“ usw.

Antwort

3

print immer wieder ein in der realen Welt. Wenn Sie Inception ausführen möchten, können Sie eine print-Funktion entwickeln, die immer Null zurückgibt. Auf diese Weise können Sie überprüfen, ob Sie sich in einem Traum oder in der realen Welt befinden.

In Wirklichkeit ist jedoch die Verwendung von print der Rückgabewert der gleiche wie einfach mit true. Unendliche While-Schleifen, Drucken von Debugging-Informationen, etc. sind alle sehr zwingende Anwendungen, aber sie sind schlechtes Design (randaliert auf verrückt) und sollte vermieden werden.

+0

haha, ich weiß nicht, ob diese Antwort für den Ratschlag, wie man einen Anfang programmieren soll, gewählt wurde ... oder ein praktisches Us für die Funktion, das ist absolut keine gute Idee! aber immer noch + 1 – MadDokMike

+0

Könnte ein bisschen von beidem sein;) – ose

2

Da das Ergebnis immer truthy ist, können Sie Kette sie zusammen in einem Ausdruck wie folgt aus:

if (print('debug stuff') && $a == 1) { 
    // do stuff 
} elseif (print('debug another') && $a > 56) { 
    // do stuff 
} 

Da die Bedingungen ausgewertet werden, wäre es wie eine Art Debug arbeiten, die das Ergebnis nicht beeinflussen.

Oder in einer Endlos-Schleife verwendet:

while(print('still in the loop')) { 
    // do something very exciting 
} 

Obwohl diese einige Dinge können Sie nicht tun mit echo (es einen Parse-Fehler verursachen würde), der Nutzen ist im Wesentlichen auf die beschränkt Testen und Debuggen Bühne statt die Betriebsphase.

+2

Danke ... Es ist wirklich offensichtlich. Sie können dort sogar einige Schleifenvariablen drucken. – BlitZ

0
**echo** 

No return value 
Outputs one or more strings separated by commas 

    e.g. echo "String 1", "String 2" 

**print** 

Returns 1, so it can be used in an expression 
Outputs only a single string 

z.B. if ((print "foo") & & (print "bar"))

1

Ich kann keine brauchbaren Ausdrücke sehen. Aber ich kann einige seltsame schaffen:

For-Schleife Kurz Drucker:

for($i=0; $i<100; $i+=print($i.')<br/>')) ; 

While-Schleife Druckzähler:

//$result is some db result 
$rowCounter = 0; 
while($row = $result->fetchAssoc()) { 
    $rowCounter += print($row['column']); 
} 
+0

Cool, ich mag die Beispiele. Vor allem die for-Schleife. Normalerweise würde ich das in zwei Reihen machen. Ich frage mich, ob es klug ist zu verwenden oder ob es weiser wäre, anderen Code für das gleiche Ergebnis zu verwenden. –