echo прави НЕЗАБАВЕН изход. Ако се опитате да повторите функция, която сама прави ехо, ехото на функцията се изпълнява ПЪРВО. напр.
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
и се изпълнява като еквивалент на
echo 'foo';
echo 'bar';
Защо? Защото echo първо трябва да конструира низа, който се извежда. Така че преди bar може да бъде ехо, родителското ехо трябва да извика foo() . Тази функция не връща нищо, тя просто изпълнява свое собствено ехо. множество echo повикванията не се координират помежду си, така че ехото на foo прави своя изход. тогава foo не връща нищо към родителското ехо, така че вие правите echo 'bar' . null и извежда bar .
Ако сте имали това:
function bar() {
return 'bar';
}
echo 'foo' . bar();
ще работи както се очаква. Последователността на изпълнение ще бъде:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar