Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

PHP Build a Basic PHP Website (2018) Listing and Sorting Inventory Items Creating the Display Function

Why is it better to return the HTML function to the code as text assigned to a variable instead of using echo?

My code works, I'd just like a better understanding of the logic behind this.

Algirdas Lalys
Algirdas Lalys
9,389 Points

Hi jasonto,

Do you mean PHP functions, because I have never heard about HTML functions. For example you are trying to undestand. What is the difference between echoing value in the function and returning value with a function which you can store in the variable. For example.

<?php

function add_numbers($num1, $num2) {
  echo $num1 + $num2;
}

// and

function another_add_numbers($num1, $num2) {
  return $num1 + $num2;
}
?>

I'm just trying to understand the question, correct me if I'm wrong:)

3 Answers

Seth Kroger
Seth Kroger
56,406 Points

You can alter or add to the string before you finally echo it to output. Maybe you want an array of items and filter some out. You can't do that if it is immediately output to the page.

When writing functions there are two things to bear in mind as results. There is the value returned, and there are "side-effects", things the function does to change something or perform some action, but isn't reflected in the return value. echoing to output is a side-effect, and a useful one, but it is usually better to rely on only the return value and not have side effects. It makes the code more modular and easier to reason about and debug.

Hi Algirdas. That's not what I was asking . It's a php function that is called get_item_html($id, $item){}. The full function is below. At the 2:00 minute mark in the video Alena says it's better to assign to a variable called $output, and the return the $output later in our code because it gives us more flexiblility, but I'd like a better understanding of how it gives us more flexibility.

function get_item_html($id, $item) {
    $output = "<li><a href=['#']><img src='" 
        . $item["img"] . "' alt='" 
        . $item["title"] . "'/>" 
        . "<p>View Details</p>"
        . "</a></li>";
    return $output;
}

Thank you Seth Kroger !