FAQ: Booleans and Comparison Operators - Ternary Operator

This community-built FAQ covers the “Ternary Operator” exercise from the lesson “Booleans and Comparison Operators”.

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

Learn PHP

FAQs on the exercise Ternary Operator

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!
You can also find further discussion and get answers to your questions over in Language Help.

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

Need broader help or resources? Head to Language Help and Tips and Resources. If you are wanting feedback or inspiration for a project, check out Projects.

Looking for motivation to keep learning? Join our wider discussions in Community

Learn more about how to use this guide.

Found a bug? Report it online, or post in Bug Reporting

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!

Hi the correct answer as far as I can see for this question is:

function ternaryCheckout($items)
{
$items <= 12 ? “express lane” : “regular lane”;
}

But the course is throwing up the error:

Your function should return a string. We tested your function and expected a string return value but instead it returned a value of type NULL

What am I doing wrong here? is it an issue with my syntax? Or a bug with the course itself?

Any help would be greatly appreciated.

James

1 Like

Hey James, welcome to the forums.

The error is right, right now your function is not returning anything.

Consider the following:

function sayHello() {
  "Hello";
}

echo sayHello();

As it is, “Hello” wouldn’t be printed. Because it’s not being returned from inside the function.

Sure, you could write it like this:

function sayHello() {
  echo "Hello";
}

sayHello();

But what we really want is a return statement, in this case.

Thank you. My confusion arose from the fact hat I thought the “return” was included in the ternary operator.

I’m having the same issue, and this isn’t actually helping me.
In a ternary operator, the expressions on either side of the : are returned - at least, that’s what the course says:

`* The first operand is a condition to check. This is followed by a question mark  `?` .
* The second operand is an expression to  `return`  if the condition is  `TRUE` . This is followed by a colon ( `:` ).
* The third operand is an expression to  `return`  if the condition is  `FALSE` .`

And in fact, the hint for the exercise says that this is what the code should look like:

$items <= 12 ? "express lane" : "regular lane";

This is what I’ve written, but I still get the same error

If the correct code is

return $items <= 12 ? "express lane" : "regular lane";

then the lesson needs to be rewritten to make it clear that the ternary operator is not returning anything itself.

3 Likes

Hey there,

While I understand where this might have been confusing, we ought to keep something in mind.

It’s essential to understand that it is in fact the function itself that has to return a value.

Whether we’re dealing with a ternary operator or not, the function has to return something.

function chooseCheckoutLane($items){
  if ($items <= 12){
    return "express lane";
  } else {
    return "regular lane";
  }
}

Here it clearly states that you’ll either return express lane, or regular lane. Leave return out and it simply won’t return anything. The hint doesn’t give you an outright answer, and is actually focused on the ternary itself, not the return part. Return was likely covered in Introduction to Functions in PHP.

I am confused by below explanation can some please help me to understand?
by default the variable is ‘FALSE’ but in the explanation it says if its true we assign purple color but purple color is in the FALSE statement.

$isClicked = FALSE;
if ( $isClicked ) {
$link_color = “purple”;
} else {
$link_color = “blue”;
}

Explanation: In the code above, our condition checks the value of the $isClicked variable. If it’s TRUE we assign $link_color to "purple" , otherwise we assign it the value "blue" . Our code is somewhat repetitive—the code in each code block is only slightly different.