Bird
Raised Fist0
PHPprogramming~5 mins

Match expression (PHP 8) - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a match expression in PHP 8?
A match expression is a new control structure in PHP 8 that allows you to compare a value against multiple conditions and return a result. It is similar to switch but more concise and returns a value.
Click to reveal answer
intermediate
How does match differ from switch in PHP?
Unlike switch, match is an expression that returns a value, supports strict type comparisons, does not allow fall-through, and requires all cases to be handled or a default to be provided.
Click to reveal answer
intermediate
What happens if no case matches and no default is provided in a match expression?
If no case matches and there is no default case, a UnhandledMatchError exception is thrown at runtime.
Click to reveal answer
beginner
Can a match expression have multiple conditions for a single case?
Yes, you can list multiple conditions separated by commas for a single case in a match expression, and if any condition matches, that case's value is returned.
Click to reveal answer
beginner
Write a simple match expression that returns 'Weekend' for 6 or 7, and 'Weekday' for 1 to 5.
Example:
$dayType = match($day) {
6, 7 => 'Weekend',
1, 2, 3, 4, 5 => 'Weekday',
default => 'Invalid day',
};
Click to reveal answer
What type of comparison does match use in PHP 8?
ALoose comparison (==)
BStrict comparison (===)
CBitwise comparison
DReference comparison
What happens if a match expression has no matching case and no default?
AReturns false
BReturns null
CExecutes the last case
DThrows an UnhandledMatchError exception
Which of these is NOT true about match expressions?
AThey can return a value
BThey require all cases to be handled or a default
CThey allow fall-through between cases
DThey use strict type comparison
How do you specify multiple conditions for one case in a match expression?
ASeparate conditions with commas
BUse multiple <code>case</code> lines
CUse logical OR operators
DUse arrays
Which PHP version introduced the match expression?
APHP 8.0
BPHP 7.3
CPHP 8.1
DPHP 7.4
Explain how a match expression works in PHP 8 and how it differs from a switch statement.
Think about how match is more like a value-returning expression than a statement.
You got /5 concepts.
    Write a match expression that categorizes a number as 'small' for 1-3, 'medium' for 4-6, and 'large' for 7-9, with a default of 'unknown'.
    Use commas to list multiple values for each case.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main advantage of using a match expression in PHP 8 compared to a switch statement?
      easy
      A. It returns a value and uses strict comparison.
      B. It allows fall-through between cases.
      C. It only works with strings.
      D. It requires a default case.

      Solution

      1. Step 1: Understand match vs switch behavior

        Match expressions return a value directly, unlike switch which is a statement.
      2. Step 2: Identify comparison type

        Match uses strict comparison (===), while switch uses loose comparison (==).
      3. Final Answer:

        It returns a value and uses strict comparison. -> Option A
      4. Quick Check:

        Match returns value + strict check [OK]
      Hint: Remember: match returns values and checks types strictly [OK]
      Common Mistakes:
      • Thinking match allows fall-through like switch
      • Believing match works only with strings
      • Assuming default case is mandatory in match
      2. Which of the following is the correct syntax for a simple match expression in PHP 8?
      easy
      A. match ($value) { 1 => 'one', 2 => 'two', default => 'other' };
      B. match $value { 1: 'one', 2: 'two', default: 'other' };
      C. match ($value) { 1: 'one', 2: 'two', default => 'other' };
      D. match ($value) { 1 => 'one', 2 => 'two', _ => 'other' };

      Solution

      1. Step 1: Recall match syntax

        Match uses parentheses around the expression and curly braces with arrows (=>) for cases.
      2. Step 2: Identify correct default syntax

        Default case uses the keyword default with =>, not _ or colon.
      3. Final Answer:

        match ($value) { 1 => 'one', 2 => 'two', default => 'other' }; -> Option A
      4. Quick Check:

        Correct syntax uses parentheses, arrows, and default keyword [OK]
      Hint: Use parentheses and arrows => with default keyword [OK]
      Common Mistakes:
      • Using colon : instead of arrow =>
      • Omitting parentheses around the match expression
      • Using _ instead of default for fallback
      3. What will be the output of the following PHP code?
      $status = 2;
      $message = match($status) {
      1 => 'Pending',
      2 => 'Approved',
      3 => 'Rejected',
      default => 'Unknown'
      };
      echo $message;
      medium
      A. Pending
      B. Unknown
      C. Rejected
      D. Approved

      Solution

      1. Step 1: Identify the value of $status

        $status is set to 2.
      2. Step 2: Match $status to cases

        Case 2 matches 'Approved'.
      3. Final Answer:

        Approved -> Option D
      4. Quick Check:

        Value 2 matches 'Approved' [OK]
      Hint: Match returns the value for exact case match [OK]
      Common Mistakes:
      • Confusing default case with matched case
      • Assuming loose comparison might match wrong case
      • Forgetting match returns a value, not prints it
      4. Identify the error in this PHP 8 match expression code:
      $input = 'banana';
      $result = match($input) {
      'apple' => 'fruit',
      'carrot' => 'vegetable'
      };
      echo $result;
      medium
      A. Match expression cannot use strings as cases.
      B. Syntax error due to missing semicolon after match.
      C. Missing default case causes UnhandledMatchError.
      D. Variable $result is not assigned properly.

      Solution

      1. Step 1: Check for default case presence

        The match expression lacks a default case for unmatched values.
      2. Step 2: Understand consequences

        If input does not match any case, PHP throws UnhandledMatchError.
      3. Final Answer:

        Missing default case causes UnhandledMatchError. -> Option C
      4. Quick Check:

        Always include default to avoid errors [OK]
      Hint: Always add default case to handle unmatched values [OK]
      Common Mistakes:
      • Assuming default case is optional
      • Thinking strings can't be used as match cases
      • Confusing syntax errors with runtime errors
      5. You want to categorize a number into 'small', 'medium', or 'large' using a PHP 8 match expression. Which code correctly implements this logic for:
      - small: 1 or 2
      - medium: 3 or 4
      - large: any other number
      $num = 3;
      // Your match expression here
      hard
      A. match($num) { 1, 2 => 'small', 3, 4 => 'medium', _ => 'large' };
      B. match($num) { 1, 2 => 'small', 3, 4 => 'medium', default => 'large' };
      C. match $num { 1, 2 => 'small', 3, 4 => 'medium', default => 'large' };
      D. match($num) { 1, 2: 'small', 3, 4: 'medium', default => 'large' };

      Solution

      1. Step 1: Use comma-separated values for multiple cases

        PHP 8 match allows multiple values per case separated by commas.
      2. Step 2: Use correct default keyword

        Default fallback must use default keyword, not underscore or other.
      3. Final Answer:

        match($num) { 1, 2 => 'small', 3, 4 => 'medium', default => 'large' }; -> Option B
      4. Quick Check:

        Multiple values + default keyword = match($num) { 1, 2 => 'small', 3, 4 => 'medium', default => 'large' }; [OK]
      Hint: Use commas for multiple cases and default keyword for fallback [OK]
      Common Mistakes:
      • Using _ instead of default for fallback
      • Not separating multiple cases with commas
      • Confusing syntax with switch statement
      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