Bird
Raised Fist0
PHPprogramming~10 mins

Spaceship operator in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Spaceship operator
Evaluate left expression
↓
Evaluate right expression
↓
Compare left and right
↓
Return -1 if left < right
↓
Return 0 if left == right
↓
Return 1 if left > right
↓
End
The spaceship operator compares two values and returns -1, 0, or 1 depending on whether the left value is less than, equal to, or greater than the right value.
Execution Sample
PHP
<?php
$result = 5 <=> 3;
echo $result;
?>
This code compares 5 and 3 using the spaceship operator and prints the result.
Execution Table
StepLeft ExpressionRight ExpressionComparisonResult
1535 > 31
2222 == 20
3141 < 4-1
4---End of comparisons
💡 All comparisons done, operator returns -1, 0, or 1 based on comparison
Variable Tracker
VariableStartAfter 1After 2After 3Final
resultundefined10-1varies per comparison
Key Moments - 3 Insights
Why does the spaceship operator return 1 when left is greater than right?
Because the operator is designed to return 1 when the left value is greater, as shown in execution_table row 1 where 5 > 3 returns 1.
What happens if both values are equal?
The operator returns 0, indicating equality, as shown in execution_table row 2 where 2 == 2 returns 0.
Can the spaceship operator be used with strings?
Yes, it compares strings lexicographically, returning -1, 0, or 1 just like with numbers.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the result when left is 1 and right is 4?
A-1
B1
C0
DUndefined
💡 Hint
Check execution_table row 3 where left=1 and right=4
At which step does the spaceship operator return 0?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look at execution_table row 2 where left and right are equal
If the left expression is less than the right, what does the spaceship operator return?
A0
B-1
C1
DIt throws an error
💡 Hint
See execution_table row 3 for left < right case
Concept Snapshot
Spaceship operator (<=>) compares two values.
Returns -1 if left < right.
Returns 0 if left == right.
Returns 1 if left > right.
Useful for sorting and comparisons.
Works with numbers and strings.
Full Transcript
The spaceship operator in PHP compares two values and returns -1, 0, or 1 depending on whether the left value is less than, equal to, or greater than the right value. For example, 5 <=> 3 returns 1 because 5 is greater than 3. When both values are equal, like 2 <=> 2, it returns 0. If the left value is less, like 1 <=> 4, it returns -1. This operator is useful for sorting and comparing values easily.

Practice

(1/5)
1. What does the PHP spaceship operator <=> return when comparing two equal values?
easy
A. 1
B. -1
C. 0
D. true

Solution

  1. Step 1: Understand the spaceship operator behavior

    The spaceship operator returns -1 if the left value is less, 0 if equal, and 1 if greater.
  2. Step 2: Apply to equal values

    When both values are equal, the operator returns 0.
  3. Final Answer:

    0 -> Option C
  4. Quick Check:

    Equal values return 0 [OK]
Hint: Equal values always return 0 with <=> operator [OK]
Common Mistakes:
  • Thinking it returns true or false
  • Confusing with comparison operators like == or ===
  • Assuming it returns boolean instead of integer
2. Which of the following is the correct syntax to compare two variables $a and $b using the spaceship operator in PHP?
easy
A. $a <=> $b;
B. $a => $b;
C. $a <==> $b;
D. $a <-> $b;

Solution

  1. Step 1: Recall the spaceship operator syntax

    The spaceship operator is written as <=> between two values.
  2. Step 2: Check each option

    $a <=> $b; uses <=> correctly. Others have invalid or incorrect symbols.
  3. Final Answer:

    $a <=> $b; -> Option A
  4. Quick Check:

    Correct operator is <=> [OK]
Hint: Spaceship operator is exactly <=> with no extra symbols [OK]
Common Mistakes:
  • Using => which is for arrays
  • Adding extra equals signs
  • Using arrows like <-> which is invalid
3. What is the output of the following PHP code?
$x = 5;
$y = 10;
echo $x <=> $y;
medium
A. -1
B. 1
C. 0
D. 10

Solution

  1. Step 1: Compare values 5 and 10 using spaceship operator

    Since 5 is less than 10, the operator returns -1.
  2. Step 2: Output the result

    The echo statement prints -1.
  3. Final Answer:

    -1 -> Option A
  4. Quick Check:

    5 < 10 returns -1 [OK]
Hint: Left less than right returns -1 with <=> [OK]
Common Mistakes:
  • Confusing output with boolean true or false
  • Expecting the right value to print
  • Thinking it returns 1 when left is smaller
4. Identify the error in the following PHP code using the spaceship operator:
$a = 7;
$b = 3;
if ($a <=> $b) {
echo 'a is greater';
}
medium
A. Variables $a and $b are not defined
B. Spaceship operator cannot be used in if condition
C. Missing semicolon after echo statement
D. The condition always evaluates to true except when values are equal

Solution

  1. Step 1: Understand spaceship operator in if condition

    The operator returns -1, 0, or 1. In PHP, 0 is false, others are true.
  2. Step 2: Analyze the condition with $a=7 and $b=3

    Since 7 > 3, it returns 1, so condition is true and echo runs.
  3. Final Answer:

    The condition always evaluates to true except when values are equal -> Option D
  4. Quick Check:

    Non-zero spaceship result is true in if [OK]
Hint: Spaceship returns 0 (false) only if values equal [OK]
Common Mistakes:
  • Thinking spaceship operator returns boolean
  • Expecting it to directly compare like > or <
  • Ignoring that 0 is false and others true in if
5. Given an array $numbers = [3, 1, 4, 1, 5], which code snippet correctly sorts it in ascending order using the spaceship operator in a custom comparison function?
hard
A. usort($numbers, fn($a, $b) => $a == $b);
B. usort($numbers, fn($a, $b) => $a <=> $b);
C. sort($numbers, fn($a, $b) => $a <=> $b);
D. usort($numbers, fn($a, $b) => $b <=> $a);

Solution

  1. Step 1: Understand sorting with spaceship operator

    To sort ascending, compare $a and $b with $a <=> $b.
  2. Step 2: Check correct function usage

    usort accepts a comparison function; sort does not take a callback.
  3. Final Answer:

    usort($numbers, fn($a, $b) => $a <=> $b); -> Option B
  4. Quick Check:

    Ascending sort uses $a <=> $b with usort [OK]
Hint: Use usort with fn($a,$b) => $a <=> $b for ascending sort [OK]
Common Mistakes:
  • Using sort() with a callback function
  • Reversing $a and $b for ascending order
  • Using equality check instead of comparison
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard