Bird
0
0

Given the array $settings = ['theme' => null, 'language' => 'en'];, which of the following uses the null coalescing operator to correctly set $theme to 'default' if $settings['theme'] is null, and $language to 'en' if not set?

hard📝 Application Q8 of 15
PHP - Operators
Given the array $settings = ['theme' => null, 'language' => 'en'];, which of the following uses the null coalescing operator to correctly set $theme to 'default' if $settings['theme'] is null, and $language to 'en' if not set?
A$theme = $settings['theme'] ??= 'default'; $language = $settings['language'] ??= 'en';
B$theme = $settings['theme'] ?: 'default'; $language = $settings['language'] ?: 'en';
C$theme = $settings['theme'] ?? 'default'; $language = $settings['language'] ?? 'en';
D$theme = isset($settings['theme']) ? $settings['theme'] : 'default'; $language = isset($settings['language']) ? $settings['language'] : 'en';
Step-by-Step Solution
Solution:
  1. Step 1: Understand null coalescing for null and unset keys

    The operator returns right operand if left is null or not set.
  2. Step 2: Check each option

    $theme = $settings['theme'] ?? 'default'; $language = $settings['language'] ?? 'en'; uses ?? correctly for both null and unset keys. $theme = $settings['theme'] ?: 'default'; $language = $settings['language'] ?: 'en'; uses ?: which treats empty strings and zero as false. $theme = isset($settings['theme']) ? $settings['theme'] : 'default'; $language = isset($settings['language']) ? $settings['language'] : 'en'; uses ternary with isset, which works but is longer. $theme = $settings['theme'] ??= 'default'; $language = $settings['language'] ??= 'en'; uses ??= which assigns if null but is not the question's requirement.
  3. Final Answer:

    $theme = $settings['theme'] ?? 'default'; $language = $settings['language'] ?? 'en'; -> Option C
  4. Quick Check:

    Use ?? to handle null or unset keys simply = D [OK]
Quick Trick: Use ?? to provide defaults for null or missing keys [OK]
Common Mistakes:
  • Using ?: which treats empty as false
  • Overcomplicating with isset ternary
  • Misusing ??= operator

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More PHP Quizzes