FAQ: Introduction to PHP Functions - Return Statements

This community-built FAQ covers the “Return Statements” exercise from the lesson “Introduction to PHP Functions”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn PHP

FAQs on the exercise Return Statements

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 (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 (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

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!

5 Likes

As this question has remained unanswered for the past month, it deserves further investigation, so I re-upped your post.

Please post a link to the exercise in question, in a reply, and we can attempt to get to the bottom of this. Thanks.

I have the same question :slight_smile: Could somebody explain please?

Let’s start with a link to the exercise, please.

The exercise in question is: https://www.codecademy.com/courses/learn-php/lessons/introduction-to-php-functions/exercises/using-return-statements?action=resume_content_item

Ex:
function printNumberReturnString()
{
echo 18;
return “eighteen”;
}

$my_num = printNumberReturnString();
echo $my_num;

And it displays: 18eighteen

echo does not include a newline, so the pencil stays where it last ended.

SERP: php echo newline

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!

1 Like

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.

2 Likes

Got it - Thanks.

In defining $my_num the function is invoked. This becomes clearer in the following exercises…

1 Like

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.

That aside, what was the question?

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?

We need to rewind, in determining, ‘what is a function?’. Can we start from there?

This is the exercise we are looking at – https://www.codecademy.com/courses/learn-php/lessons/introduction-to-php-functions/exercises/using-return-statements

You guys are complicating this discussion. For me, the simple question is

“how do we assign the function to a variable, without calling the function.”

Please help. This is a major issue we need to understand.

1 Like

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…

function foo() {
    return 'something returned';
}

$my_foo = foo()

echo $my_foo

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