Menu

PHP echo: wypisywanie tekstu, zmiennych i HTML

echo wypisuje jeden lub więcej łańcuchów: echo "Hello, $name"; albo echo $a, $b;. To typowy sposób wysyłania tekstu lub HTML na stronę. print robi to samo z jedną wartością i zwraca 1; <?= $x ?> to skrócona forma wewnątrz HTML.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

echo wypisuje tekst. Napisz echo "Hello";, aby wypisać łańcuch, echo "Hello, $name";, aby wstawić zmienną, i echo $a, $b;, aby wypisać kilka wartości po kolei. To, co wypisze echo, staje się stroną wyświetlaną przez przeglądarkę albo tekstem, który widzisz w terminalu.

Pierwsza linia używa interpolacji (zmienna stoi w podwójnych cudzysłowach), druga łączy łańcuchy operatorem ., a trzecia przekazuje trzy wartości rozdzielone przecinkami. Wszystkie trzy dają ten sam rodzaj wyniku.

Wypisywanie HTML przez echo

Na stronie WWW echo zwykle wypisuje HTML. Przeglądarka dostaje tekst i wyświetla znaczniki. Kliknij Run, a karta Page pokaże wyrenderowany wynik:

Ostatnia linia używa pojedynczych cudzysłowów, więc podwójnych cudzysłowów w class="note" nie trzeba escapować. W pojedynczych cudzysłowach zmienne nie są podstawiane, więc używaj ich do stałego tekstu. Jeśli wartość pochodzi od odwiedzającego (formularz, URL), wypisz ją przez htmlspecialchars, żeby nie mogła wstrzyknąć HTML; zobacz stronę o htmlspecialchars.

Krótki znacznik echo <?=

W pliku HTML <?= $value ?> to skrócona forma <?php echo $value; ?>. Dzięki niej szablony są czytelne:

Krótki znacznik echo jest zawsze dostępny. Drugi krótki znacznik, <? bez php, zależy od ustawienia i nie należy go używać.

Kilka wartości i nowe linie

echo nie dodaje znaku nowej linii. W terminalu dodaj "\n" (w podwójnych cudzysłowach) albo stałą PHP_EOL. W HTML znak nowej linii w źródle nic nie zmienia na ekranie; użyj <br> albo osobnych elementów.

Przecinki i kropki dają ten sam wynik. Z przecinkami echo wypisuje każdą wartość po kolei; z kropkami PHP najpierw buduje jeden łańcuch, a potem go wypisuje. Znaki nowej linii mają własną stronę: nowa linia w PHP.

echo vs print

print to starsze rodzeństwo. Wypisuje jedną wartość i zawsze zwraca 1, dzięki czemu może wystąpić w wyrażeniu. echo przyjmuje dowolną liczbę wartości i nic nie zwraca.

echoprint
Wartościjedna lub więcej, rozdzielone przecinkamidokładnie jedna
Zwracanic (to instrukcja)1
Użycie w wyrażeniunietak, $ok = print "x";
Typowe użycieprawie wszystkorzadko

printf to jeszcze coś innego: formatuje wartości przez symbole zastępcze, jak printf("%05.2f", 3.14159), i jest opisany na stronie o sprintf.

Wypisywanie tablicy lub obiektu

echo wypisuje tylko łańcuchy i wartości, które dają się zamienić na łańcuch (liczby, wartości logiczne, null). Tablica się nie zamienia. Twoje lokalne PHP wypisze ostrzeżenie i słowo Array:

PHP Warning:  Array to string conversion in /home/index.php on line 3
Array

Aby pokazać zawartość, wybierz funkcję odpowiednią do zadania:

Obiekt jest bardziej rygorystyczny: jeśli jego klasa nie definiuje __toString(), echo $object; zatrzymuje skrypt błędem Error: Object of class User could not be converted to string. Wartości logiczne też często zaskakują: echo true; wypisuje 1, a echo false; nie wypisuje nic. Użyj var_dump($value), gdy chcesz zobaczyć dokładny typ i wartość.

Częsty błąd: echo z nawiasami i przecinkami

Ponieważ echo wygląda jak funkcja, ludzie piszą echo("a", "b");. To błąd parsowania, bo nawiasy obejmują jedno wyrażenie:

PHP Parse error:  syntax error, unexpected token "," in /home/index.php on line 2

Usuń nawiasy (echo "a", "b";) albo połącz wartości (echo("a" . "b");). To samo dotyczy print, który nigdy nie przyjmuje drugiej wartości, z nawiasami czy bez.

Najczęściej zadawane pytania

Czym różni się echo od print w PHP?

Oba wypisują łańcuchy. echo przyjmuje kilka wartości rozdzielonych przecinkami (echo $a, $b;) i nic nie zwraca; print przyjmuje dokładnie jedną wartość i zwraca 1, więc można go użyć w wyrażeniu. W praktyce prawie wszędzie używa się echo.

Czy echo wymaga nawiasów?

Nie. echo to konstrukcja językowa, a nie funkcja, więc echo "Hi"; to normalna forma. echo("Hi"); działa, bo nawiasy grupują tylko jedno wyrażenie, ale echo("a", "b"); to błąd parsowania.

Dlaczego echo false nic nie wypisuje?

echo zamienia wartość na łańcuch, a false staje się pustym łańcuchem "", natomiast true staje się "1". Aby zobaczyć samą wartość logiczną, użyj var_dump($x); (wypisze bool(false)) albo echo var_export($x, true); (wypisze false).

Co oznacza <?= w PHP?

<?= $value ?> to krótki znacznik echo, identyczny z <?php echo $value; ?>. Od PHP 5.4 jest zawsze włączony i to typowy sposób wypisywania wartości w szablonach HTML.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ