echo()
La parola chiave "echo" in PHP serve a visualizzare una o più stringhe. In questo articolo ne esploriamo sintassi e utilizzo.
L'istruzione PHP echo
echo è il modo più comune per inviare output da uno script PHP alla pagina. È un costrutto del linguaggio, non una funzione, quindi non ha valore di ritorno e non è necessario usare le parentesi per chiamarlo. Userai echo continuamente: per stampare testo, visualizzare i valori delle variabili e scrivere HTML.
Questa pagina descrive la sintassi, il comportamento diverso tra virgolette singole e doppie che confonde i principianti, il tag breve <?= ?> e come echo si differenzia da print.
Sintassi
echo expression;
echo expression1, expression2, ...;Poiché echo è un costrutto del linguaggio, lo si chiama senza parentesi:
echo "Hello"; // correct
echo("Hello"); // also works for a SINGLE argument
echo("a", "b"); // PARSE ERROR — parentheses can't wrap multiple args
echo "a", "b"; // correct way to pass multiple argumentsPuoi passare più valori separandoli con virgole — questo è leggermente più veloce della concatenazione con . perché non viene creata alcuna stringa temporanea. I valori vengono stampati uno di seguito all'altro senza alcun separatore aggiunto.
Esempi
Vediamo alcuni esempi pratici di come si può usare la parola chiave echo:
Esempi di echo in PHP
<?php
// Example 1: Comma-separated arguments (native syntax)
echo "Hello World!", PHP_EOL;
// Output: Hello World!
// Example 2: String concatenation
$myName = "John";
$myAge = 30;
echo "My name is " . $myName . " and I am " . $myAge . " years old.";
// Output: My name is John and I am 30 years old.
// Example 3: Variables without quotes (comma-separated)
$greeting = "Hello";
$name = "World";
echo $greeting, " ", $name, "!";
// Output: Hello World!Virgolette Singole vs. Doppie
Lo stile delle virgolette che scegli cambia il modo in cui vengono gestite le variabili, quindi è importante capirlo fin dall'inizio. Nelle stringhe con virgolette doppie, PHP analizza le variabili e le sequenze di escape. Nelle stringhe con virgolette singole, invece, non lo fa — il testo viene stampato letteralmente.
<?php
$name = "World";
echo "Hello $name\n"; // Hello World (variable is interpolated)
echo 'Hello $name\n'; // Hello $name\n (printed verbatim, no newline)Usa le virgolette doppie quando vuoi l'interpolazione delle variabili; usa le virgolette singole (leggermente più veloci) quando hai testo semplice e letterale. Consulta PHP Strings per le regole complete, inclusa la sintassi con le parentesi graffe come "{$user['name']}".
Stampare HTML con echo
Un utilizzo molto comune di echo è la stampa di HTML. Puoi incorporare le variabili direttamente nel markup:
<?php
$title = "Welcome";
echo "<h1>$title</h1>";
// Output: <h1>Welcome</h1>Per blocchi di HTML di grandi dimensioni è solitamente più pulito uscire completamente da PHP (?> ... <?php) piuttosto che usare echo per ogni riga.
Il Tag Echo Breve
La forma abbreviata <?= ... ?> è esattamente equivalente a <?php echo ... ?>. È abilitata per impostazione predefinita in tutte le versioni PHP supportate ed è ideale per i template:
<p>Hello, <?= $name ?>!</p>Questo è il modo consigliato per stampare un singolo valore all'interno di file prevalentemente HTML.
echo vs. print
echo e print sembrano simili, ma ci sono delle differenze:
echo | print | |
|---|---|---|
| Tipo | costrutto del linguaggio | costrutto del linguaggio |
| Valore di ritorno | nessuno (void) | sempre 1 |
| Argomenti multipli | sì (echo $a, $b;) | no |
| Uso in un'espressione | no | sì (perché restituisce un valore) |
Poiché print restituisce 1, può comparire all'interno di un'espressione: $ok = print "hi";. echo non può. In pratica echo è preferito per l'output generico. Consulta il confronto dedicato echo vs print e il riferimento per print per i dettagli.
Errori Comuni
- Nessuna parentesi con argomenti multipli.
echo("a", "b");è un errore di analisi; usaecho "a", "b";. echonon restituisce nulla. Non puoi scrivere$x = echo "hi";. Usaprint(osprintf()) se hai bisogno di un valore.- Le virgolette singole non interpolano.
echo 'Total: $price';stampa il letterale$price, non il valore della variabile.