echo

(PHP 4, PHP 5, PHP 7, PHP 8)

echo β€” Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строки

ОписаниС

function echo(string ...$expressions): void

Языковая конструкция Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ ряд Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… символов Π½ΠΎΠ²ΠΎΠΉ строки ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния строгой Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, echo Π½Π΅ относится ΠΊ функциям, это языковая конструкция. АргумСнты конструкции β€” список Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄ΡƒΡ‚ Π·Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом echo, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ запятыми ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками. Языковая конструкция echo, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языковых конструкций, Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, поэтому Π΅Ρ‘ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² контСкстС выраТСния.

Π£ конструкции echo Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ синтаксис, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ сразу послС ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅Π³Π° ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°ΠΊ равСнства. Π‘ΠΎΠΊΡ€Π°Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ синтаксис Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ с ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ short_open_tag.

Π£ мСня Π΅ΡΡ‚ΡŒ <?=$foo?> foo.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ отличия ΠΎΡ‚ конструкции print состоят Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ конструкция echo ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

expressions

Одно ΠΈΠ»ΠΈ нСсколько строковых Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… запятыми. НСстроковыС значСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² строки, Π΄Π°ΠΆΠ΅ Ссли Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° strict_types.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния послС выполнСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Π²ΠΎΠ΄Π° строк языковой конструкциСй echo

<?php

echo "echo Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ скобок.";

// Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
// ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ вмСстС ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚
echo 'Π­Ρ‚Π° ', 'строка ', 'сформирована ', 'ΠΈΠ· ', 'Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².', "\n";
echo
'Π­Ρ‚Π° ' . 'строка ' . 'сформирована ' . 'с ' . 'ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ.' . "\n";

// Новая строка ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π» Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ; ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ "ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΠΌΠΈΡ€" Π² ΠΎΠ΄Π½Ρƒ строку
echo "ΠΏΡ€ΠΈΠ²Π΅Ρ‚";
echo
"ΠΌΠΈΡ€";

// Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€
echo "ΠΏΡ€ΠΈΠ²Π΅Ρ‚", "ΠΌΠΈΡ€";

echo
"Π­Ρ‚Π° строка Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚
нСсколько строк. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ строк Ρ‚ΠΎΠΆΠ΅
выводятся"
;

echo
"Π­Ρ‚Π° строка Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚\nнСсколько строк. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ строк Ρ‚ΠΎΠΆΠ΅\nвыводятся.";

// Π’ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡΒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ выраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ строки
$foo = "ΠΏΡ€ΠΈΠΌΠ΅Ρ€";
echo
"ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” это $foo"; // ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” это ΠΏΡ€ΠΈΠΌΠ΅Ρ€

$fruits = ["лимон", "апСльсин", "банан"];
echo
implode(" и ", $fruits); // лимон и апСльсин и банан

// НСстроковыС выраТСния приводятся ΠΊ строковым,
// Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ установкС строгой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² конструкциСй declare(strict_types=1)
echo 6 * 7; // 42

// Однако ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚:
($some_var) ? print 'true' : print 'false'; // print β€” Ρ‚ΠΎΠΆΠ΅ конструкция,
// Π½ΠΎ это допустимоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1,
// поэтому конструкция print допустима Π² этом контСкстС.

echo $some_var ? 'true': 'false'; // Π‘Π½Π°Ρ‡Π°Π»Π° выполняСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСрСдаётся Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ echo

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #2 ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ echo Π½Π΅ относится ΠΊ выраТСниям

<?php

// Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ нСдопустим, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ языковая конструкция echo Π½Π΅ Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:
($some_var) ? echo 'true' : echo 'false';

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ нСльзя Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это языковая конструкция, Π° Π½Π΅ функция.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ИспользованиС с ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° для конструкции echo Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ синтаксичСской ошибки ΠΈ создаст синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Однако это ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ выраТСния, Π° Π½Π΅ Ρ‡Π°ΡΡ‚ΡŒ самого синтаксиса echo.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #3 АргумСнты Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках

<?php

echo "ΠΏΡ€ΠΈΠ²Π΅Ρ‚", PHP_EOL;;
// Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ Β«ΠΏΡ€ΠΈΠ²Π΅Ρ‚Β»

echo("ΠΏΡ€ΠΈΠ²Π΅Ρ‚"), PHP_EOL;;
// Π’ΠΎΠΆΠ΅ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ "ΠΏΡ€ΠΈΠ²Π΅Ρ‚", ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ("ΠΏΡ€ΠΈΠ²Π΅Ρ‚") β€” ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

echo(1 + 2) * 3, PHP_EOL;;
// Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ "9"; ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ порядок вычислСния, поэтому сначала вычисляСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 1 + 2, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 3 * 3;
// конструкция echo Π²ΠΈΠ΄ΠΈΡ‚ всё Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚

echo "ΠΏΡ€ΠΈΠ²Π΅Ρ‚", " ΠΌΠΈΡ€", PHP_EOL;;
// Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ "ΠΏΡ€ΠΈΠ²Π΅Ρ‚ ΠΌΠΈΡ€"

echo("ΠΏΡ€ΠΈΠ²Π΅Ρ‚"), (" ΠΌΠΈΡ€"), PHP_EOL;
// Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ "ΠΏΡ€ΠΈΠ²Π΅Ρ‚ ΠΌΠΈΡ€"; ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки β€” Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ выраТСния

?>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #4 НСдопустимоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

<?php

echo("hello", " world"), PHP_EOL;
// ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ выбросит ΠΎΡˆΠΈΠ±ΠΊΡƒ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° Parse Error,
// ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ("ΠΏΡ€ΠΈΠ²Π΅Ρ‚", "ΠΌΠΈΡ€") β€” Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

?>
Подсказка

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π½Π°Π±ΠΎΡ€Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² конструкция echo ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ослоТнСний, связанных с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ Π² PHP. Π£ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ Ρƒ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π° Π΄ΠΎ PHP 8.0.0 Ρƒ Ρ‚ΠΎΡ‡ΠΊΠΈ Π±Ρ‹Π» Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ слоТСния с Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ:

<?php

// Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ' . isset($name) вычисляСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ
// ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, поэтому echo Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ $name
echo 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ' . isset($name) ? $name : 'Π”ΠΆΠΎΠ½ Π”ΠΎΡƒ' . '!';

// Π‘ΠΊΠΎΠ±ΠΊΠΈ пСрСопрСдСлят порядок вычислСния ΠΈ конструкция ΠΏΠΎΠ²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ
echo 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ' . (isset($name) ? $name : 'Π”ΠΆΠΎΠ½ Π”ΠΎΡƒ') . '!';

// Π”ΠΎ PHP 8.0.0 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ» "2", Π° Π½Π΅ "Π‘ΡƒΠΌΠΌΠ°: 3"
echo 'Π‘ΡƒΠΌΠΌΠ°: ' . 1 + 2;

// И снова, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ порядок вычислСния выраТСния.
echo 'Π‘ΡƒΠΌΠΌΠ°: ' . (1 + 2);

?>

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π½Π°Π±ΠΎΡ€Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² скобки Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ установки ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ обрабатываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ:

<?php

echo "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ", isset($name) ? $name : "Π”ΠΆΠΎΠ½ Π”ΠΎΡƒ", "!";

echo
"Π‘ΡƒΠΌΠΌΠ°: ", 1 + 2;

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 1 note

up
39
pemapmodder1970 at gmail dot com ΒΆ
9 years ago
Passing multiple parameters to echo using commas (',')is not exactly identical to using the concatenation operator ('.'). There are two notable differences.

First, concatenation operators have much higher precedence. Referring to http://php.net/operators.precedence, there are many operators with lower precedence than concatenation, so it is a good idea to use the multi-argument form instead of passing concatenated strings.

<?php
echo "The sum is " . 1 | 2; // output: "2". Parentheses needed.
echo "The sum is ", 1 | 2; // output: "The sum is 3". Fine.
?>

Second, a slightly confusing phenomenon is that unlike passing arguments to functions, the values are evaluated one by one.

<?php
function f($arg){
  var_dump($arg);
  return $arg;
}
echo "Foo" . f("bar") . "Foo";
echo "\n\n";
echo "Foo", f("bar"), "Foo";
?>

The output would be:
string(3) "bar"FoobarFoo

Foostring(3) "bar"
barFoo

It would become a confusing bug for a script that uses blocking functions like sleep() as parameters:

<?php
while(true){
  echo "Loop start!\n", sleep(1);
}
?>

vs

<?php
while(true){
  echo "Loop started!\n" . sleep(1);
}
?>

With ',' the cursor stops at the beginning every newline, while with '.' the cursor stops after the 0 in the beginning every line (because sleep() returns 0).