There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply () below.
If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.
Join the Discussion. Help a fellow learner on their journey.
Ask or answer a question about this exercise by clicking reply () below!
Agree with a comment or answer? Like () to up-vote the contribution!
Out of curiosity, why does the assignment of a function to a variable output the echoed string inside the function?
I understand functions, how they work, why they’re used, etc. I just don’t follow why the sheer act of assigning it to a variable triggers the echoed string. You’d think that, like the return value, the string would only show when you called the function.
Could someone shed some light on that for me? Thanks!
I am also wondering the same. Not why the string and return are not separate, but why they are showing up for seemingly different reasons. The return is being printed because it was brought forth with the echo command, but the string was somehow printed just by declaring the function as a variable. I haven’t seen anything print just from it being declared thus far. Why is it able to do that? Thanks!
I have the same question when (half way through this exercise) I run:
function printStringReturnNumber()
{
echo "Next birthday you will be ";
return 42;
}
$my_num = printStringReturnNumber();
“Next birthday you will be” is displayed. However at no point in the code do I invoke the function printStringReturnNumber() so why is anything printed at all?
It is invoked as the right side of the assignment is evaluated and the outcome assigned. Since it is invoked, the echo action takes place, and $my_num will now be 42.
So how do you assign it to a variable and not invoke the function? If I do not want the newly assigned variable to echo.
$my_num = (invoke but do not print) printStringReturnNumber();
Bumping for clarification on this as well.
If the function is as defined
function test()
{
echo "Line 1\n";
echo "Line 2\n";
return "Final Line";
}
and you echo it, then
echo test();
//prints Line 1
//prints Line 2
//prints Final Line
if you simply define the function as a variable, i.e., $var = test(); then
$var = test();
//prints Line 1
//prints Line 2
but if you then echo that variable it prints the return statement as well. Finally if you just invoke it, then it does the same as defining the variable and only prints Line 1 and 2. With that being said why define it as a variable or invoke it versus echo it, if you have a return statement?
Normally we might only be echoing the return line.
It’s important to note that PHP is a pre-processor which means we’re generating HTML. echo is akin to DOM insertion. It is also very expensive and should be left to the last step, given an HTML string.
Thanks for your response. I guess my question now is, what’s the proper way to ‘use’ or invoke a function if you’re only using it for the return? What’s the need to assign it as a variable or invoke it only to get the return echo’s? If you can just echo it to begin with and call everything inside the defined function?
What has that to do with this lesson? We are not asked to do that, but assign the return value of the function to a variable. That means calling the function in an assignment…
I have the same question. Please, could anyone explain to us why when we assign a function to a variable, it automatically runs the function before we invoke it?
Thank you