Bird
Raised Fist0
PHPprogramming~20 mins

Enums in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PHP Enum Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of backed enum value access
What is the output of this PHP code using backed enums?
PHP
<?php
enum Status: string {
    case Pending = 'pending';
    case Completed = 'completed';
}

echo Status::Completed->value;
Apending
BCompleted
CStatus::Completed
Dcompleted
Attempts:
2 left
💡 Hint
Access the string value of the enum case using ->value.
❓ Predict Output
intermediate
2:00remaining
Output of enum method call
What does this PHP code print when calling a method inside an enum?
PHP
<?php
enum Direction {
    case North;
    case South;
    case East;
    case West;

    public function opposite(): Direction {
        return match($this) {
            Direction::North => Direction::South,
            Direction::South => Direction::North,
            Direction::East => Direction::West,
            Direction::West => Direction::East,
        };
    }
}

echo Direction::East->opposite()->name;
AEast
BWest
CNorth
DSouth
Attempts:
2 left
💡 Hint
The opposite of East is West according to the match expression.
🔧 Debug
advanced
2:00remaining
Identify the error in enum declaration
What error does this PHP code raise when declaring this enum?
PHP
<?php
enum Color {
    case Red = 1;
    case Green = 'green';
    case Blue = 3;
}
AFatal error: Backed enum cases must have the same scalar type
BNo error, code runs fine
CTypeError: Enum case values must be integers
DSyntax error: Missing semicolon after case
Attempts:
2 left
💡 Hint
Backed enums require all cases to have the same scalar type.
📝 Syntax
advanced
2:00remaining
Which option causes a syntax error?
Which of these enum declarations will cause a syntax error in PHP?
Aenum Status: string { case Active = 'yes'; case Inactive = 'no'; }
Benum Status { case Active; case Inactive; }
Cenum Status { case Active; case Inactive }
Denum Status: int { case Active = 1; case Inactive = 0; }
Attempts:
2 left
💡 Hint
Check for missing semicolons after case declarations.
🚀 Application
expert
2:00remaining
Number of cases in a backed enum
Given this backed enum, how many cases does it contain?
PHP
<?php
enum HttpStatus: int {
    case OK = 200;
    case Created = 201;
    case Accepted = 202;
    case NoContent = 204;
}

$cases = HttpStatus::cases();
echo count($cases);
A4
B0
C5
D3
Attempts:
2 left
💡 Hint
Count the number of case declarations inside the enum.

Practice

(1/5)
1. What is the main purpose of using enum in PHP?
easy
A. To group related constant values under one name
B. To create a new type of variable that can hold any value
C. To define functions inside classes
D. To declare variables with dynamic types

Solution

  1. Step 1: Understand what enums represent

    Enums are used to group related constant values, like fixed options or states.
  2. Step 2: Compare with other options

    Other options describe unrelated concepts: variables or functions, not enums.
  3. Final Answer:

    To group related constant values under one name -> Option A
  4. Quick Check:

    Enums = group constants [OK]
Hint: Enums group fixed options clearly [OK]
Common Mistakes:
  • Thinking enums create dynamic variables
  • Confusing enums with classes or functions
  • Assuming enums can hold any value
2. Which of the following is the correct syntax to declare a backed enum with string values in PHP?
easy
A. enum Status: string { case Active = 'active'; case Inactive = 'inactive'; }
B. enum Status { case Active = 'active'; case Inactive = 'inactive'; }
C. enum Status: int { case Active = 'active'; case Inactive = 'inactive'; }
D. enum Status: string { Active = 'active'; Inactive = 'inactive'; }

Solution

  1. Step 1: Identify backed enum syntax

    Backed enums require a type after the enum name, like : string, and cases with assigned values.
  2. Step 2: Check each option

    enum Status: string { case Active = 'active'; case Inactive = 'inactive'; } correctly uses enum Status: string { case Active = 'active'; ... }. enum Status { case Active = 'active'; case Inactive = 'inactive'; } misses the type. enum Status: int { case Active = 'active'; case Inactive = 'inactive'; } uses wrong type int with string values. enum Status: string { Active = 'active'; Inactive = 'inactive'; } misses case keyword.
  3. Final Answer:

    enum Status: string { case Active = 'active'; case Inactive = 'inactive'; } -> Option A
  4. Quick Check:

    Backed enum syntax = enum Status: string { case Active = 'active'; case Inactive = 'inactive'; } [OK]
Hint: Backed enums need type and 'case' keyword [OK]
Common Mistakes:
  • Omitting the enum type after colon
  • Forgetting 'case' before each value
  • Assigning string values to int enums
3. What will be the output of the following PHP code?
enum Direction { case North; case South; case East; case West; }
$dir = Direction::East;
echo $dir->name;
medium
A. Error: Cannot access name
B. direction::East
C. East case
D. East

Solution

  1. Step 1: Understand enum case name property

    In PHP enums, $dir->name returns the case name as a string.
  2. Step 2: Check the assigned case

    The variable $dir is assigned Direction::East, so $dir->name is "East".
  3. Final Answer:

    East -> Option D
  4. Quick Check:

    Enum case name = East [OK]
Hint: Use ->name to get enum case name string [OK]
Common Mistakes:
  • Expecting the value instead of name
  • Trying to print enum case directly
  • Confusing case name with enum class name
4. Identify the error in this PHP enum declaration:
enum Color {
case Red = 1;
case Green = 2;
case Blue;
}
medium
A. Case Blue should have a value assigned
B. Missing enum type for backed enum values
C. Enum name must be lowercase
D. Cases cannot have integer values

Solution

  1. Step 1: Check enum type for backed values

    When enum cases have assigned values (like 1, 2), the enum must declare a type (e.g., : int).
  2. Step 2: Analyze the given enum

    The enum Color assigns values to some cases but does not specify : int after the enum name, causing a syntax error.
  3. Final Answer:

    Missing enum type for backed enum values -> Option B
  4. Quick Check:

    Backed enums need type declared [OK]
Hint: Backed enums must declare type after enum name [OK]
Common Mistakes:
  • Not declaring enum type when assigning values
  • Assuming cases can mix assigned and unassigned values
  • Thinking enum names must be lowercase
5. Given this enum:
enum Status: string {
case Pending = 'pending';
case Approved = 'approved';
case Rejected = 'rejected';
}

Which code correctly converts a string $input to the matching Status enum case or returns null if no match?
hard
A. new Status($input)
B. Status::from($input)
C. Status::tryFrom($input)
D. Status::$input

Solution

  1. Step 1: Understand enum methods for backed enums

    PHP backed enums provide from() which throws error if no match, and tryFrom() which returns null if no match.
  2. Step 2: Match requirement

    The question asks to return matching enum or null if no match, so tryFrom() is correct.
  3. Final Answer:

    Status::tryFrom($input) -> Option C
  4. Quick Check:

    Safe enum conversion = tryFrom() [OK]
Hint: Use tryFrom() to safely convert string to enum [OK]
Common Mistakes:
  • Using from() which throws error on no match
  • Trying to instantiate enum with new
  • Accessing enum cases as static properties
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