echo
heeft ONMIDDELLIJKE uitvoer. Als u een functie probeert te echoën die zelf een echo doet, wordt de echo van de functie EERST uitgevoerd. bijv.
function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
en wordt uitgevoerd als het equivalent van
echo 'foo';
echo 'bar';
Waarom? Omdat echo
moet eerst de string construeren die wordt uitgevoerd. Dus vóór bar
kan worden herhaald, moet de bovenliggende echo foo()
. aanroepen . Die functie retourneert niets, het voert gewoon zijn eigen echo uit. meerdere echo
oproepen coördineren niet met elkaar, dus foo's echo doet zijn uitvoer. dan retourneert foo niets naar de bovenliggende echo, dus je doet echo 'bar' . null
, en output bar
.
Als je dit had:
function bar() {
return 'bar';
}
echo 'foo' . bar();
het zou werken zoals verwacht. De uitvoeringsvolgorde zou zijn:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar