echo
gör OMEDELBART utmatning. Om du försöker eka en funktion som själv gör ett eko, exekveras funktionens eko FÖRST. t.ex.
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
och körs som motsvarigheten till
echo 'foo';
echo 'bar';
Varför? Eftersom echo
måste först konstruera strängen som matas ut. Så före bar
kan eko måste föräldraekot anropa foo()
. Den funktionen returnerar ingenting, den utför helt enkelt sitt eget eko. flera echo
samtal koordinerar inte med varandra, så foo's eko gör dess utdata. sedan returnerar foo ingenting till föräldraekot, så du gör echo 'bar' . null
, och mata ut bar
.
Om du hade detta:
function bar() {
return 'bar';
}
echo 'foo' . bar();
det skulle fungera som förväntat. Körsekvensen skulle vara:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar