Bird
Raised Fist0
PHPprogramming~10 mins

Match expression (PHP 8) - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to return the correct day name using match expression.

PHP
<?php
$dayNumber = 3;
$dayName = match($dayNumber) {
    1 => 'Monday',
    2 => 'Tuesday',
    [1] => 'Wednesday',
    4 => 'Thursday',
    5 => 'Friday',
    6 => 'Saturday',
    7 => 'Sunday',
    default => 'Invalid day'
};
echo $dayName;
Drag options to blanks, or click blank then click option'
A0
B3
C5
D8
Attempts:
3 left
💡 Hint
Common Mistakes
Using a number that does not match Wednesday, like 5 or 0.
Forgetting to use the exact number for the case.
2fill in blank
medium

Complete the code to return the correct message for a given status code using match expression.

PHP
<?php
$statusCode = 404;
$message = match($statusCode) {
    200 => 'OK',
    400 => 'Bad Request',
    [1] => 'Not Found',
    500 => 'Server Error',
    default => 'Unknown Status'
};
echo $message;
Drag options to blanks, or click blank then click option'
A404
B200
C300
D500
Attempts:
3 left
💡 Hint
Common Mistakes
Using 300 or 200 which do not correspond to 'Not Found'.
Confusing 500 with 404.
3fill in blank
hard

Fix the error in the match expression to correctly handle fruit colors.

PHP
<?php
$fruit = 'apple';
$color = match($fruit) {
    'banana' => 'yellow',
    'apple' => [1],
    'grape' => 'purple',
    default => 'unknown'
};
echo $color;
Drag options to blanks, or click blank then click option'
A'red'
Bred
C"red"
D'green'
Attempts:
3 left
💡 Hint
Common Mistakes
Using unquoted strings like red which cause errors.
Using double quotes which is valid but not the intended answer here.
4fill in blank
hard

Fill both blanks to create a match expression that returns the season for a given month number.

PHP
<?php
$month = 11;
$season = match(true) {
    $month >= 3 && $month <= 5 => [1],
    $month >= 6 && $month <= 8 => [2],
    $month >= 9 && $month <= 11 => 'Autumn',
    default => 'Winter'
};
echo $season;
Drag options to blanks, or click blank then click option'
A'Spring'
B'Summer'
C'Winter'
D'Autumn'
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up the seasons for the month ranges.
Forgetting to quote the season names.
5fill in blank
hard

Fill all three blanks to create a match expression that returns the type of a variable.

PHP
<?php
$var = 3.14;
$type = match(gettype($var)) {
    [1] => 'integer',
    [2] => 'string',
    [3] => 'float',
    default => 'other'
};
echo $type;
Drag options to blanks, or click blank then click option'
A'integer'
B'string'
C'double'
D'float'
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'float' instead of 'double' for the float type.
Not quoting the type strings.

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