echo faz saída IMEDIATA. Se você tentar ecoar uma função que faz um eco, o eco da função será executado PRIMEIRO. por exemplo. function foo() {
echo 'foo';
}
echo 'bar' . foo(); // output foobar
e é executado como o equivalente de
echo 'foo';
echo 'bar';
Por quê? Porque
echo primeiro tem que construir a string que está sendo produzida. Então, antes de bar pode ser ecoado, o eco pai deve chamar foo() . Essa função não retorna nada, ela simplesmente executa seu próprio eco. vários echo chamadas não coordenam entre si, então o echo de foo faz sua saída. então foo não retorna nada para o pai echo, então você está fazendo echo 'bar' . null , e saída bar . Se você tivesse isso:
function bar() {
return 'bar';
}
echo 'foo' . bar();
funcionaria como esperado. A sequência de execução seria:
$temp = bar(); // $temp gets string'bar'
echo 'foo' . $temp;
echo 'foo' . 'bar';
echo 'foobar';
-> output foobar