Bird
Raised Fist0
PHPprogramming~5 mins

Enums in PHP - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Enums in PHP
O(n)
Understanding Time Complexity

Enums in PHP help organize related values clearly. Understanding their time complexity shows how fast your program runs when using them.

We want to know how the program's speed changes when working with enums as input grows.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


enum Status: string {
    case Pending = 'pending';
    case Active = 'active';
    case Completed = 'completed';
}

function checkStatus(Status $status): string {
    return match($status) {
        Status::Pending => 'Waiting',
        Status::Active => 'In progress',
        Status::Completed => 'Done',
    };
}

$status = Status::Active;
echo checkStatus($status);
    

This code defines an enum and a function that returns a message based on the enum value.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The match expression checks enum cases once per function call.
  • How many times: It runs once each time checkStatus is called.
How Execution Grows With Input

Each call to checkStatus checks a fixed number of enum cases, no matter the input size.

Input Size (n)Approx. Operations
1010 checks (one per call)
100100 checks
10001000 checks

Pattern observation: The work grows directly with how many times you call the function, but each call does a fixed small amount of work.

Final Time Complexity

Time Complexity: O(n)

This means the total time grows in a straight line with the number of times you use the enum in the function.

Common Mistake

[X] Wrong: "Enums slow down the program because they check many cases every time."

[OK] Correct: The number of enum cases is fixed and small, so checking them is very fast and does not grow with input size.

Interview Connect

Understanding how enums work and their time cost helps you write clear and efficient code, a skill valued in many programming tasks.

Self-Check

"What if the enum had 1000 cases? How would the time complexity of checking a case change?"

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