Bird
Raised Fist0
PHPprogramming~20 mins

Enum backed values in PHP - Practice Problems & Coding Challenges

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

echo Status::Active->value;
AStatus::Active
BActive
Cpending
Dactive
Attempts:
2 left
💡 Hint
Access the string value of the enum case using ->value.
❓ Predict Output
intermediate
2:00remaining
Enum from method with backed values
What will this code output?
PHP
<?php
enum Level: int {
    case Low = 1;
    case Medium = 5;
    case High = 10;
}

$level = Level::from(5);
echo $level->name;
ALevel::Medium
B5
CMedium
DLow
Attempts:
2 left
💡 Hint
The from() method returns the enum case matching the value.
❓ Predict Output
advanced
2:00remaining
What error does this enum code raise?
What error will this PHP code produce?
PHP
<?php
enum Color: string {
    case Red = 'red';
    case Green = 'green';
    case Blue = 'blue';
}

$color = Color::from('yellow');
ANo error, returns null
BValueError
CParseError
DTypeError
Attempts:
2 left
💡 Hint
from() throws an error if the value is not defined in the enum.
🧠 Conceptual
advanced
2:00remaining
Difference between from() and tryFrom() in backed enums
Which statement correctly describes the difference between from() and tryFrom() methods in PHP backed enums?
Afrom() throws an error if no matching value; tryFrom() returns null instead.
Bfrom() returns null if no matching value; tryFrom() throws an error instead.
CBoth methods throw errors if no matching value is found.
DBoth methods return null if no matching value is found.
Attempts:
2 left
💡 Hint
One method is safer and returns null instead of error.
❓ Predict Output
expert
2:00remaining
Output of enum backed values in array map
What is the output of this PHP code?
PHP
<?php
enum Priority: int {
    case Low = 1;
    case Medium = 5;
    case High = 10;
}

$values = array_map(fn($p) => $p->value, [Priority::Low, Priority::High]);
print_r($values);
A
Array
(
    [0] =&gt; 1
    [1] =&gt; 10
)
B
Array
(
    [0] =&gt; Low
    [1] =&gt; High
)
C
Array
(
    [0] =&gt; Priority::Low
    [1] =&gt; Priority::High
)
D
Array
(
    [0] =&gt; 0
    [1] =&gt; 1
)
Attempts:
2 left
💡 Hint
array_map extracts the ->value property from each enum case.

Practice

(1/5)
1.

What is the main purpose of using backed enums in PHP?

easy
A. To allow enums to inherit from classes
B. To link enum cases to fixed strings or numbers
C. To enable enums to have methods
D. To make enums mutable

Solution

  1. Step 1: Understand enum backed values

    Backed enums associate each enum case with a fixed string or integer value.
  2. Step 2: Identify the purpose

    This linking helps in storing, comparing, or displaying enum data easily.
  3. Final Answer:

    To link enum cases to fixed strings or numbers -> Option B
  4. Quick Check:

    Backed enums link cases to values = A [OK]
Hint: Backed enums always connect cases to fixed values [OK]
Common Mistakes:
  • Thinking enums can inherit classes
  • Confusing backed enums with mutable enums
  • Assuming enums cannot have methods
2.

Which of the following is the correct syntax to declare a backed enum with string values in PHP?

enum Status: string {
    case ACTIVE = 'active';
    case INACTIVE = 'inactive';
}
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: Check enum declaration syntax

    Backed enums require specifying the type after the enum name, e.g., : string.
  2. Step 2: Verify case declarations

    Each case must use the case keyword and assign a value with =.
  3. Final Answer:

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

    Backed enum syntax with type and cases = B [OK]
Hint: Backed enums need type after enum name and case keyword [OK]
Common Mistakes:
  • Omitting the type after enum name
  • Not using 'case' keyword before cases
  • Using wrong type like int for string values
3.

What will be the output of the following PHP code?

enum Color: int {
    case RED = 1;
    case GREEN = 2;
    case BLUE = 3;
}

echo Color::from(2)->name;
medium
A. Color::GREEN
B. 2
C. GREEN
D. Error: No case for value 2

Solution

  1. Step 1: Understand Color::from(2)

    The from() method returns the enum case matching the value 2, which is GREEN.
  2. Step 2: Access the name property

    Using ->name returns the case name as a string, here "GREEN".
  3. Final Answer:

    GREEN -> Option C
  4. Quick Check:

    from(2) returns GREEN name = GREEN [OK]
Hint: from(value) returns enum case; ->name gives case name [OK]
Common Mistakes:
  • Printing the value instead of the name
  • Confusing from() with tryFrom()
  • Expecting full enum class name output
4.

Identify the error in the following PHP enum backed values code:

enum Status: string {
    case PENDING = 'pending';
    case COMPLETED = 'completed';
}

$status = Status::from('done');
medium
A. No error, code runs fine
B. Compile error: Enum must use int type
C. Syntax error: Missing semicolon after enum cases
D. Runtime error: Value 'done' not found in enum cases

Solution

  1. Step 1: Check the from() method usage

    The from() method throws an error if the value does not match any enum case.
  2. Step 2: Analyze the value 'done'

    Since 'done' is not a defined case value, a runtime error occurs.
  3. Final Answer:

    Runtime error: Value 'done' not found in enum cases -> Option D
  4. Quick Check:

    from() with invalid value causes runtime error = D [OK]
Hint: from() fails if value not in enum cases [OK]
Common Mistakes:
  • Assuming from() returns null on failure
  • Thinking syntax error due to semicolons
  • Believing enum must be int type only
5.

Given the following enum, which code snippet correctly converts a string value to an enum case safely without throwing an error?

enum Direction: string {
    case NORTH = 'north';
    case SOUTH = 'south';
    case EAST = 'east';
    case WEST = 'west';
}

Choose the correct usage:

hard
A. $dir = Direction::tryFrom('east');
B. $dir = Direction::from('southwest');
C. $dir = Direction::from('up');
D. $dir = Direction::tryFrom('down');

Solution

  1. Step 1: Understand from() vs tryFrom()

    from() throws error if value not found; tryFrom() returns null instead.
  2. Step 2: Check each option's value

    Only tryFrom('east') matches a valid case and safely returns the enum case.
  3. Final Answer:

    $dir = Direction::tryFrom('east'); -> Option A
  4. Quick Check:

    tryFrom() safely converts valid value = C [OK]
Hint: Use tryFrom() to avoid errors on invalid values [OK]
Common Mistakes:
  • Using from() with invalid values causing errors
  • Expecting tryFrom() to throw errors
  • Confusing enum case names with values
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