PHP
De waarde van een variabele uitvoeren
Zoeken…
Invoering
Om een dynamisch en interactief PHP-programma te bouwen, is het handig om variabelen en hun waarden uit te voeren. De PHP-taal zorgt voor meerdere methoden voor waarde-uitvoer. Dit onderwerp behandelt de standaardmethoden voor het afdrukken van een waarde in PHP en waar deze methoden kunnen worden gebruikt.
Opmerkingen
Variabelen in PHP zijn er in verschillende soorten. Afhankelijk van het gebruik, wilt u ze mogelijk als gerenderde HTML naar de browser uitvoeren, uitvoeren voor foutopsporing of uitvoeren naar de terminal (als u een toepassing uitvoert via de opdrachtregel).
Hieronder staan enkele van de meest gebruikte methoden en taalconstructies om variabelen uit te voeren:
-
echo
- Voert een of meer strings uit -
print
- Voert een string uit en retourneert1
(altijd) -
printf
- Voert een opgemaakte string uit en geeft de lengte van de uitgevoerde string terug -
sprintf
- Formatteert een string en geeft de opgemaakte string terug -
print_r
- Voert de inhoud van het argument uit of geeft deze terug als een voor mensen leesbare string -
var_dump
- Voert door mensen leesbare foutopsporingsinformatie uit over de inhoud van het argument (en), inclusief het type en de waarde -
var_export
-var_export
als resultaat eenvar_export
van de variabele als geldige PHP-code, die kan worden gebruikt om de waarde opnieuw te creëren.
Opmerking: Wanneer u probeert een object als een string uit te voeren, zal PHP proberen het in een string te converteren (door
__toString()
aan te roepen - als het object een dergelijke methode heeft). Indien niet beschikbaar, kan een fout vergelijkbaar metObject of class [CLASS] could not be converted to string
. In dit geval moet u het object verder inspecteren, zie: uitvoeren van een gestructureerde weergave van arrays-en-objecten .
echo en print
echo
en print
zijn taalconstructies, geen functies. Dit betekent dat ze geen haakjes nodig hebben rond het argument zoals een functie doet (hoewel je altijd haakjes kunt toevoegen rond bijna elke PHP-expressie en dus echo("test")
ook geen kwaad kan). Ze geven de stringvoorstelling van een variabele, constante of uitdrukking weer. Ze kunnen niet worden gebruikt om arrays of objecten af te drukken.
Wijs de string
Joel
aan de variabele$name
$name = "Joel";
Voer de waarde van $ name uit met
echo
&print
echo $name; #> Joel print $name; #> Joel
Haakjes zijn niet verplicht, maar kunnen worden gebruikt
echo($name); #> Joel print($name); #> Joel
Meerdere parameters gebruiken (alleen
echo
)echo $name, "Smith"; #> JoelSmith echo($name, " ", "Smith"); #> Joel Smith
print
, anders danecho
, een expressie (geeft1
terug) en kan dus op meer plaatsen worden gebruikt:print("hey") && print(" ") && print("you"); #> you11
Het bovenstaande komt overeen met:
print ("hey" && (print (" " && print "you"))); #> you11
Steno-notatie voor echo
Buiten PHP-tags is standaard een korte notatie voor echo
beschikbaar, waarbij <?=
om de uitvoer te starten en ?>
te beëindigen. Bijvoorbeeld:
<p><?=$variable?></p>
<p><?= "This is also PHP" ?></p>
Merk op dat er geen beëindiging is ;
. Dit werkt omdat de afsluitende PHP-tag fungeert als de terminator voor de enkele instructie. Het is dus gebruikelijk om de puntkomma weg te laten in deze steno-notatie.
Prioriteit van print
Hoewel de print
taalconstructie is, heeft deze prioriteit als operator. Het plaatst tussen =
+=
-=
*=
**=
/=
.=
%=
&=
En and
operatoren en heeft de associatie verlaten. Voorbeeld:
echo '1' . print '2' + 3; //output 511
Hetzelfde voorbeeld met haakjes:
echo '1' . print ('2' + 3); //output 511
Verschillen tussen echo
en print
Kortom, er zijn twee belangrijke verschillen:
-
print
slechts één parameter nodig, terwijlecho
meerdere parameters kan hebben. -
print
geeft een waarde terug, kan dus als uitdrukking worden gebruikt.
Een gestructureerd beeld van arrays en objecten uitvoeren
print_r()
- Arrays en objecten uitvoeren voor foutopsporing
print_r
zal een voor mensen leesbaar formaat van een array of object uitvoeren.
Mogelijk hebt u een variabele die een array of object is. Als u het probeert uit te voeren met een echo
wordt de fout gegenereerd:
Notice: Array to string conversion
. U kunt in plaats daarvan de functie print_r
om een voor mensen leesbaar formaat van deze variabele te dumpen.
U kunt true doorgeven als de tweede parameter om de inhoud als een tekenreeks te retourneren.
$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);
Dit levert het volgende op:
stdClass Object
(
[myvalue] => Hello World
)
Array
(
[0] => Hello
[1] => World
)
Hello World
42
Verder kan de uitvoer van print_r
worden vastgelegd als een string in plaats van eenvoudigweg te worden herhaald. De volgende code dumpt bijvoorbeeld de opgemaakte versie van $myarray
in een nieuwe variabele:
$formatted_array = print_r($myarray, true);
Merk op dat als je de uitvoer van PHP in een browser bekijkt en het wordt geïnterpreteerd als HTML, de regeleinden niet worden weergegeven en de uitvoer veel minder leesbaar is, tenzij je zoiets doet
echo '<pre>' . print_r($myarray, true) . '</pre>';
Als u de broncode van een pagina opent, wordt uw variabele ook op dezelfde manier opgemaakt zonder de tag
<pre>
gebruiken.
Als alternatief kunt u de browser vertellen dat wat u uitvoert, platte tekst is en geen HTML:
header('Content-Type: text/plain; charset=utf-8');
print_r($myarray);
var_dump()
- Geef door mensen leesbare foutopsporingsinformatie over de inhoud van de argument (en) inclusief het type en de waarde
De uitvoer is gedetailleerder in vergelijking met print_r
omdat deze ook het type van de variabele samen met zijn waarde en andere informatie zoals object-ID's, matrixgroottes, stringlengtes, referentiemarkeringen, enz. Uitvoert.
U kunt var_dump
om een meer gedetailleerde versie voor foutopsporing uit te voeren.
var_dump($myobject, $myarray, $mystring, $myint);
De uitvoer is gedetailleerder:
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)
Opmerking : als u xDebug in uw ontwikkelomgeving gebruikt, is de uitvoer van var_dump standaard beperkt / afgekapt. Raadpleeg de officiële documentatie voor meer informatie over de opties om dit te wijzigen.
var_export()
- var_export()
geldige PHP
code uit
var_export()
dumpt een PHP
parseerbare weergave van het item.
U kunt true doorgeven als de tweede parameter om de inhoud terug te brengen naar een variabele.
var_export($myarray);
var_export($mystring);
var_export($myint);
Uitvoer is geldige PHP-code:
array (
0 => 'Hello',
1 => 'World',
)
'Hello World'
42
Om de inhoud in een variabele te plaatsen, kunt u dit doen:
$array_export = var_export($myarray, true);
$string_export = var_export($mystring, true);
$int_export = var_export($myint, 1); // any `Truthy` value
Daarna kunt u het als volgt uitvoeren:
printf('$myarray = %s; %s', $array_export, PHP_EOL);
printf('$mystring = %s; %s', $string_export, PHP_EOL);
printf('$myint = %s; %s', $int_export, PHP_EOL);
Dit levert de volgende uitvoer op:
$myarray = array (
0 => 'Hello',
1 => 'World',
);
$mystring = 'Hello World';
$myint = 42;
printf vs sprintf
printf
zal de uitgang van een geformatteerde string met behulp van plaatsaanduidingen
sprintf
retourneert de opgemaakte string
$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?
Het is ook mogelijk om een nummer te formatteren met deze 2 functies. Dit kan worden gebruikt om een decimale waarde op te maken die wordt gebruikt om geld weer te geven, zodat deze altijd 2 decimale cijfers heeft.
$money = 25.2;
printf('%01.2f', $money);
#> 25.20
De twee functies vprintf
en vsprintf
werken als printf
en sprintf
, maar accepteren een vsprintf
en een reeks waarden, in plaats van individuele variabelen.
String aaneenschakeling met echo
U kunt aaneenschakeling gebruiken om strings "end-to-end" samen te voegen terwijl ze worden uitgevoerd (bijvoorbeeld met echo
of print
).
U kunt variabelen samenvoegen met een .
(Periode / dot).
// 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>"
Net als aaneenschakeling kan echo
(indien gebruikt zonder haakjes) worden gebruikt om tekenreeksen en variabelen samen te combineren (samen met andere willekeurige expressies) met een komma (,).
$itemCount = 1;
echo 'You have ordered ', $itemCount, ' item', $itemCount === 1 ? '' : 's';
// ↑ ↑ ↑ - Note the commas
#> "You have ordered 1 item"
String-aaneenschakeling versus meerdere argumenten doorgeven aan echo
Het doorgeven van meerdere argumenten aan het echo-commando is in sommige omstandigheden voordeliger dan het samenvoegen van tekenreeksen. De argumenten worden naar de uitvoer geschreven in dezelfde volgorde waarin ze worden doorgegeven.
echo "The total is: ", $x + $y;
Het probleem met de aaneenschakeling is dat de periode .
heeft voorrang in de uitdrukking. Indien aaneengeschakeld, heeft de bovenstaande uitdrukking extra haakjes nodig voor het juiste gedrag. De voorrang van de periode is ook van invloed op ternaire operatoren.
echo "The total is: " . ($x + $y);
Grote gehele getallen uitvoeren
Op 32-bits systemen worden gehele getallen groter dan PHP_INT_MAX
automatisch geconverteerd naar zwevend. Het uitvoeren van deze waarden als gehele getallen (dwz niet-wetenschappelijke notatie) kan worden gedaan met printf
, met behulp van de float
weergave, zoals hieronder geïllustreerd:
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
Opmerking: pas op voor float-precisie, die niet oneindig is!
Hoewel dit er leuk uitziet, kunnen in dit gekunstelde voorbeeld de nummers allemaal worden weergegeven als een binair getal, omdat ze allemaal bevoegdheden van 1024 zijn (en dus 2). Zie bijvoorbeeld:
$n = pow(10, 27);
printf("%s %.0F\n", $n, $n);
// 1.0E+27 1000000000000000013287555072
Voer een multidimensionale array met index en waarde uit en druk af in de tabel
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
)
)
Multidimensionale array uitvoeren met index en waarde in tabel
<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>