Suche…


Einführung

Um ein dynamisches und interaktives PHP-Programm zu erstellen, ist es nützlich, Variablen und deren Werte auszugeben. Die PHP-Sprache erlaubt mehrere Methoden zur Ausgabe von Werten. In diesem Thema werden die Standardmethoden zum Drucken eines Werts in PHP und die Verwendung dieser Methoden beschrieben.

Bemerkungen

Variablen in PHP gibt es in verschiedenen Arten. Je nach Anwendungsfall möchten Sie sie möglicherweise als gerenderten HTML-Code an den Browser ausgeben, zum Debuggen ausgeben oder (wenn eine Anwendung über die Befehlszeile ausgeführt wird) an das Terminal ausgeben.

Nachfolgend einige der am häufigsten verwendeten Methoden und Sprachkonstrukte zur Ausgabe von Variablen:

  • echo - Gibt einen oder mehrere Strings aus
  • print - Gibt einen String aus und gibt 1 (immer)
  • printf - Gibt eine formatierte Zeichenfolge aus und gibt die Länge der ausgegebenen Zeichenfolge zurück
  • sprintf - Formatiert eine Zeichenfolge und gibt die formatierte Zeichenfolge zurück
  • print_r - print_r Inhalt des Arguments als lesbare Zeichenfolge aus oder gibt diesen zurück
  • var_dump - var_dump lesbare Debugging-Informationen zum Inhalt des Arguments (s) einschließlich Typ und Wert aus
  • var_export - var_export einen String aus, der die Variable als gültigen PHP-Code zurückgibt, der zum Wiederherstellen des Werts verwendet werden kann.

Anmerkung: Beim Versuch, ein Objekt als String auszugeben, versucht PHP, es in einen String umzuwandeln (durch Aufruf von __toString() - falls das Objekt eine solche Methode hat). Wenn nicht verfügbar, wird ein Fehler angezeigt, der dem Object of class [CLASS] could not be converted to string ähnelt, und Object of class [CLASS] could not be converted to string werden. In diesem Fall müssen Sie das Objekt genauer untersuchen, siehe: Ausgabe einer strukturierten Ansicht von Arrays und Objekten .

Echo und Drucken

echo und print sind Sprachkonstrukte, keine Funktionen. Dies bedeutet, dass sie keine Klammern um das Argument benötigen, wie dies bei einer Funktion der Fall ist (obwohl man immer fast jeden PHP-Ausdruck mit Klammern versehen kann, so dass echo("test") auch keinen Schaden anrichtet). Sie geben die Zeichenfolgendarstellung einer Variablen, einer Konstanten oder eines Ausdrucks aus. Sie können nicht zum Drucken von Arrays oder Objekten verwendet werden.

  • Weisen Sie der Variablen $name die Zeichenfolge Joel zu

    $name = "Joel";
    
  • Geben Sie den Wert von $ name mit echo & print

    echo $name;   #> Joel
    print $name;  #> Joel
    
  • Klammern sind nicht erforderlich, können aber verwendet werden

    echo($name);  #> Joel
    print($name); #> Joel
    
  • Verwendung mehrerer Parameter (nur echo )

    echo $name, "Smith";       #> JoelSmith
    echo($name, " ", "Smith"); #> Joel Smith
    
  • print Gegensatz zu echo ist print ein Ausdruck (er gibt 1 ) und kann daher an mehreren Stellen verwendet werden:

    print("hey") && print(" ") && print("you"); #> you11
    
  • Das obige ist äquivalent zu:

    print ("hey" && (print (" " && print "you"))); #> you11
    

Kurzschreibweise für echo

Wenn Sie sich außerhalb von PHP-Tags befinden , ist standardmäßig eine Kurzschreibungsnotation für echo verfügbar. Verwenden Sie <?= , Um die Ausgabe zu starten, und ?> , Um die Ausgabe zu beenden. Zum Beispiel:

<p><?=$variable?></p>    
<p><?= "This is also PHP" ?></p>

Beachten Sie, dass es keine Beendigung gibt ; . Dies funktioniert, weil das schließende PHP-Tag als Terminator für die einzelne Anweisung fungiert. Daher ist es üblich, das Semikolon in dieser Kurzschreibweise wegzulassen.

Priorität des print

Obwohl der print eine Sprachkonstruktion ist, hat er Priorität wie der Operator. Es setzt zwischen = += -= *= **= /= .= %= &= Und and Operatoren und hat die Assoziation verlassen. Beispiel:

echo '1' . print '2' + 3; //output 511

Gleiches Beispiel mit Klammern:

echo '1' . print ('2' + 3); //output 511

Unterschiede zwischen echo und print

Kurz gesagt, es gibt zwei Hauptunterschiede:

  • print nur ein Parameter benötigt, während das echo mehrere Parameter enthalten kann.
  • print gibt einen Wert zurück und kann daher als Ausdruck verwendet werden.

Ausgabe einer strukturierten Ansicht von Arrays und Objekten

print_r gibt ein vom Menschen lesbares Format eines Arrays oder Objekts aus.

Möglicherweise haben Sie eine Variable, die ein Array oder ein Objekt ist. Wenn Sie versuchen, es mit einem echo auszugeben, wird der Fehler ausgegeben:
Notice: Array to string conversion . Sie können stattdessen die Funktion print_r verwenden, um ein für Menschen lesbares Format dieser Variablen zu print_r .

Sie können true als zweiten Parameter übergeben, um den Inhalt als Zeichenfolge zurückzugeben.

$myobject = new stdClass();
$myobject->myvalue = 'Hello World';
$myarray = [ "Hello", "World" ];
$mystring = "Hello World";
$myint = 42;

// Using print_r we can view the data the array holds.
print_r($myobject);
print_r($myarray);
print_r($mystring);
print_r($myint);

Dies gibt Folgendes aus:

stdClass Object
(
    [myvalue] => Hello World
)
Array
(
    [0] => Hello
    [1] => World
)
Hello World
42

Außerdem kann die Ausgabe von print_r als eine Zeichenfolge erfasst werden, anstatt sie einfach zu wiederholen. Mit dem folgenden Code wird beispielsweise die formatierte Version von $myarray in eine neue Variable geschrieben:

$formatted_array = print_r($myarray, true);

Wenn Sie die Ausgabe von PHP in einem Browser anzeigen und als HTML interpretiert werden, werden die Zeilenumbrüche nicht angezeigt und die Ausgabe ist viel weniger lesbar, wenn Sie nicht so etwas tun

echo '<pre>' . print_r($myarray, true) . '</pre>';

Wenn Sie den Quellcode einer Seite öffnen, wird Ihre Variable auch auf dieselbe Weise ohne Verwendung des Tags <pre> formatiert.

Alternativ können Sie dem Browser mitteilen, dass Sie nur Text und nicht HTML ausgeben:

header('Content-Type: text/plain; charset=utf-8');
print_r($myarray);

var_dump() - var_dump() lesbare Debugging-Informationen über den Inhalt des Arguments (der Argumente) einschließlich Typ und Wert aus

Die Ausgabe ist im Vergleich zu print_r detaillierter, da auch der Typ der Variablen zusammen mit ihrem Wert und anderen Informationen wie Objekt-IDs, Array-Größen, String-Längen, Referenzmarken usw. ausgegeben wird

Sie können var_dump um eine detailliertere Version für das Debugging auszugeben.

var_dump($myobject, $myarray, $mystring, $myint);

Die Ausgabe ist detaillierter:

object(stdClass)#12 (1) {
  ["myvalue"]=>
  string(11) "Hello World"
}
array(2) {
  [0]=>
  string(5) "Hello"
  [1]=>
  string(5) "World"
}
string(11) "Hello World"
int(42)

Hinweis : Wenn Sie xDebug in Ihrer Entwicklungsumgebung verwenden, ist die Ausgabe von var_dump standardmäßig begrenzt / abgeschnitten. In der offiziellen Dokumentation finden Sie weitere Informationen zu den Optionen, um dies zu ändern.


var_export() - var_export() gültigen PHP Code aus

var_export() eine durch PHP analysierbare Repräsentation des Elements aus.

Sie können true als zweiten Parameter übergeben, um den Inhalt in eine Variable zurückzugeben.

var_export($myarray);
var_export($mystring);
var_export($myint);

Ausgabe ist gültiger PHP-Code:

array (
  0 => 'Hello',
  1 => 'World',
)
'Hello World'
42

Um den Inhalt in eine Variable zu setzen, können Sie Folgendes tun:

$array_export = var_export($myarray, true);
$string_export = var_export($mystring, true);
$int_export = var_export($myint, 1); // any `Truthy` value

Danach können Sie es so ausgeben:

printf('$myarray = %s; %s', $array_export, PHP_EOL);
printf('$mystring = %s; %s', $string_export, PHP_EOL);
printf('$myint = %s; %s', $int_export, PHP_EOL);

Dies wird die folgende Ausgabe erzeugen:

$myarray = array (
  0 => 'Hello',
  1 => 'World',
);
$mystring = 'Hello World';
$myint = 42;

printf vs sprintf

printf ausgeben wird eine formatierte Zeichenfolge Platzhalter verwenden

sprintf kehrt die formatierte Zeichenfolge

$name = 'Jeff';

// The `%s` tells PHP to expect a string
//            ↓  `%s` is replaced by  ↓
printf("Hello %s, How's it going?", $name);
#> Hello Jeff, How's it going?

// Instead of outputting it directly, place it into a variable ($greeting)
$greeting = sprintf("Hello %s, How's it going?", $name);
echo $greeting;
#> Hello Jeff, How's it going?

Mit diesen 2 Funktionen können Sie auch eine Nummer formatieren. Dies kann verwendet werden, um einen Dezimalwert zu formatieren, der für die Darstellung von Geld verwendet wird, so dass immer 2 Dezimalstellen vorhanden sind.

$money = 25.2;
printf('%01.2f', $money);
#> 25.20

Die beiden Funktionen vprintf und vsprintf arbeiten als printf und sprintf , akzeptieren jedoch anstelle einzelner Variablen eine sprintf und ein Array von Werten.

Stringverkettung mit Echo

Sie können die Verkettung verwenden, um Strings "end to end" zu verknüpfen, während Sie sie ausgeben (z. B. mit echo oder print ).

Sie können Variablen mit einem verketten . (Punkt / Punkt).

// String variable
$name = 'Joel';

// Concatenate multiple strings (3 in this example) into one and echo it once done.
//      1. ↓        2. ↓            3. ↓    - Three Individual string items
echo '<p>Hello ' . $name . ', Nice to see you.</p>';
//               ↑       ↑                  - Concatenation Operators

#> "<p>Hello Joel, Nice to see you.</p>"

Ähnlich wie bei der Verkettung kann das echo (wenn es ohne Klammern verwendet wird) verwendet werden, um Strings und Variablen (zusammen mit anderen beliebigen Ausdrücken) mithilfe eines Kommas (,) zu kombinieren.

$itemCount = 1;

echo 'You have ordered ', $itemCount, ' item', $itemCount === 1 ? '' : 's';
//                      ↑           ↑        ↑                - Note the commas

#> "You have ordered 1 item"

String-Verkettung vs. Übergabe mehrerer Argumente an das Echo

Das Übergeben mehrerer Argumente an den Echo-Befehl ist unter bestimmten Umständen vorteilhafter als die Verkettung von Zeichenfolgen. Die Argumente werden in der gleichen Reihenfolge in die Ausgabe geschrieben, in der sie übergeben werden.

echo "The total is: ", $x + $y;

Das Problem bei der Verkettung ist die Periode . hat im Ausdruck Vorrang. Bei Verkettung benötigt der obige Ausdruck zusätzliche Klammern für das korrekte Verhalten. Der zeitliche Vorrang betrifft auch die ternären Betreiber.

echo "The total is: " . ($x + $y);

Ausgabe großer Ganzzahlen

Bei 32-Bit-Systemen werden Ganzzahlen, die größer als PHP_INT_MAX sind, automatisch in Float konvertiert. Die Ausgabe dieser Werte als Ganzzahl (dh nicht-wissenschaftliche Notation) kann mit printf unter Verwendung der float Darstellung erfolgen, wie unten dargestellt:

foreach ([1, 2, 3, 4, 5, 6, 9, 12] as $p) {
    $i = pow(1024, $p);
    printf("pow(1024, %d) > (%7s) %20s %38.0F", $p, gettype($i), $i, $i);
    echo "  ", $i, "\n";
}
// outputs:
pow(1024,  1)  integer                 1024                                   1024  1024
pow(1024,  2)  integer              1048576                                1048576  1048576
pow(1024,  3)  integer           1073741824                             1073741824  1073741824
pow(1024,  4)   double        1099511627776                          1099511627776  1099511627776
pow(1024,  5)   double  1.1258999068426E+15                       1125899906842624  1.1258999068426E+15
pow(1024,  6)   double  1.1529215046068E+18                    1152921504606846976  1.1529215046068E+18
pow(1024,  9)   double  1.2379400392854E+27           1237940039285380274899124224  1.2379400392854E+27
pow(1024, 12)   double  1.3292279957849E+36  1329227995784915872903807060280344576  1.3292279957849E+36

Hinweis: Achten Sie auf die Genauigkeit des Schwimmers, die nicht unendlich ist!

Während dies schön aussieht, können die Zahlen in diesem erfundenen Beispiel alle als binäre Zahl dargestellt werden, da sie alle Potenzen von 1024 (und somit 2) sind. Siehe zum Beispiel:

$n = pow(10, 27);
printf("%s %.0F\n", $n, $n);
// 1.0E+27 1000000000000000013287555072

Geben Sie ein mehrdimensionales Array mit Index und Wert aus und drucken Sie es in die Tabelle

Array 
( 
    [0] => Array 
        ( 
            [id] => 13 
            [category_id] => 7 
            [name] => Leaving Of Liverpool 
            [description] => Leaving Of Liverpool 
            [price] => 1.00 
            [virtual] => 1 
            [active] => 1 
            [sort_order] => 13 
            [created] => 2007-06-24 14:08:03 
            [modified] => 2007-06-24 14:08:03 
            [image] => NONE 
        ) 

    [1] => Array 
        ( 
            [id] => 16 
            [category_id] => 7 
            [name] => Yellow Submarine 
            [description] => Yellow Submarine 
            [price] => 1.00 
            [virtual] => 1 
            [active] => 1 
            [sort_order] => 16 
            [created] => 2007-06-24 14:10:02 
            [modified] => 2007-06-24 14:10:02 
            [image] => NONE 
        ) 

)  

Mehrdimensionales Array mit Index und Wert in der Tabelle ausgeben

<table>
<?php 
foreach ($products as $key => $value) {
    foreach ($value as $k => $v) {
        echo "<tr>";
        echo "<td>$k</td>"; // Get index.
        echo "<td>$v</td>"; // Get value.
        echo "</tr>";
    }
}
?>
</table>


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow