PHP
Den Wert einer Variablen ausgeben
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 gibt1
(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 demObject of class [CLASS] could not be converted to string
ähnelt, undObject 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 ZeichenfolgeJoel
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 zuecho
istprint
ein Ausdruck (er gibt1
) 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 dasecho
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()
- Ausgabe von Arrays und Objekten zum Debuggen
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>