Bird
Raised Fist0
PHPprogramming~5 mins

Union types in PHP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a union type in PHP?
A union type allows a variable or parameter to accept values of multiple specified types. It is written using the pipe symbol (|) between types.
Click to reveal answer
beginner
How do you declare a function parameter that accepts either an int or a string using union types?
You declare it like this: <code>function example(int|string $param) { }</code>. This means $param can be an int or a string.
Click to reveal answer
intermediate
Can union types include null in PHP? How?
Yes. You can include null in a union type like int|null. This means the value can be an int or null.
Click to reveal answer
intermediate
What happens if a value passed to a union typed parameter does not match any of the types?
PHP will throw a TypeError at runtime because the value does not match the declared union types.
Click to reveal answer
advanced
Can you use union types with class types in PHP?
Yes. You can declare a parameter or property to accept multiple class types like <code>ClassA|ClassB</code>. The value must be an instance of either class.
Click to reveal answer
Which symbol is used to declare union types in PHP?
A:
B&
C,
D|
What will happen if you pass a float to a parameter declared as int|string?
AIt will accept the float without error.
BIt will throw a TypeError.
CIt will convert the float to int automatically.
DIt will ignore the parameter.
Can union types include the type 'null'?
AYes, by including null in the union.
BNo, null cannot be part of union types.
COnly if the type is nullable with ?.
DOnly for class types.
Which PHP version introduced union types?
APHP 8.0
BPHP 7.4
CPHP 8.1
DPHP 7.2
Is this a valid union type declaration? function test(int|float|string $value) {}
ANo, float cannot be in union types.
BNo, only two types allowed in union.
CYes, it accepts int, float, or string.
DYes, but only in PHP 7.
Explain what union types are in PHP and how to use them in function parameters.
Think about allowing multiple types for one variable.
You got /3 concepts.
    Describe what happens if a value does not match any type in a union type declaration.
    Consider PHP's behavior when types don't match.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does a union type in PHP allow you to do?
      function example(int|string $value) {}
      easy
      A. Only accept integer values
      B. Accept multiple types for a parameter or return value
      C. Only accept string values
      D. Combine two functions into one

      Solution

      1. Step 1: Understand union type syntax

        The | symbol between types means the parameter can be either type.
      2. Step 2: Analyze the example function

        The function accepts either an int or a string as input.
      3. Final Answer:

        Accept multiple types for a parameter or return value -> Option B
      4. Quick Check:

        Union types allow multiple types [OK]
      Hint: Look for the | symbol to spot union types [OK]
      Common Mistakes:
      • Thinking union types combine functions
      • Assuming only one type is allowed
      • Confusing union types with type casting
      2. Which of the following is the correct syntax for a union type in PHP 8+?
      function test(?? $param) {}
      easy
      A. int|string, float $param
      B. int&string $param
      C. int|string&float $param
      D. int|string $param

      Solution

      1. Step 1: Recall union type syntax

        Union types use the | symbol between types, e.g., int|string.
      2. Step 2: Check each option

        int|string $param uses | correctly. int&string $param uses & which is intersection, not union. int|string&float $param mixes union and intersection incorrectly. int|string, float $param uses a comma which is invalid.
      3. Final Answer:

        int|string $param -> Option D
      4. Quick Check:

        Union types use | symbol [OK]
      Hint: Union types always use | between types [OK]
      Common Mistakes:
      • Using & instead of | for union types
      • Separating types with commas
      • Mixing intersection and union syntax incorrectly
      3. What will be the output of this PHP code?
      function showType(int|string $value) {
          if (is_int($value)) {
              return "Integer: $value";
          } else {
              return "String: $value";
          }
      }
      
      echo showType(10) . "\n";
      echo showType("hello") . "\n";
      
      medium
      A. 10\nhello
      B. String: 10\nInteger: hello
      C. Integer: 10\nString: hello
      D. Error: Type mismatch

      Solution

      1. Step 1: Understand the function behavior

        The function checks if the input is an integer or string and returns a formatted string accordingly.
      2. Step 2: Trace the calls

        Calling with 10 (int) returns "Integer: 10". Calling with "hello" (string) returns "String: hello".
      3. Final Answer:

        Integer: 10\nString: hello -> Option C
      4. Quick Check:

        Type check returns correct output [OK]
      Hint: Check type with is_int or is_string inside function [OK]
      Common Mistakes:
      • Assuming output is just values without labels
      • Confusing string and int outputs
      • Expecting a type error for valid union types
      4. Identify the error in this PHP function using union types:
      function add(int|float $a, int|float $b): int|float {
          return $a + $b;
      }
      
      add(5, "10");
      medium
      A. Passing a string "10" instead of int or float causes a type error
      B. Return type should be only int
      C. Union types cannot be used in return types
      D. Function should not accept two parameters

      Solution

      1. Step 1: Check parameter types

        The function expects parameters of type int or float only.
      2. Step 2: Analyze the function call

        The call passes 5 (int) and "10" (string). String is not allowed, causing a type error.
      3. Final Answer:

        Passing a string "10" instead of int or float causes a type error -> Option A
      4. Quick Check:

        Parameter types must match union types exactly [OK]
      Hint: Check argument types match union types exactly [OK]
      Common Mistakes:
      • Assuming string '10' is accepted as int
      • Thinking union types disallow return types
      • Ignoring parameter count
      5. You want a function that accepts either an array of integers or a single integer and returns the sum. Which union type and code is correct?
      function sumValues(?? $input): int {
          if (is_array($input)) {
              return array_sum($input);
          }
          return $input;
      }
      hard
      A. int|array $input
      B. int|string $input
      C. array|float $input
      D. int|bool $input

      Solution

      1. Step 1: Identify input types needed

        The function accepts either a single integer or an array of integers.
      2. Step 2: Match union type to input

        int|array $input uses int|array, which matches the requirement. Others include wrong types like string, float, or bool.
      3. Final Answer:

        int|array $input -> Option A
      4. Quick Check:

        Union type matches all accepted input types [OK]
      Hint: Match union types exactly to all input types needed [OK]
      Common Mistakes:
      • Using string or bool instead of array
      • Not including all input types in union
      • Confusing float with int
      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