Menu
Coddy logo textTech

Operator null coalescing

Część sekcji Podstawy ścieżki PHP w Coddy. Lekcja 31 z 71.

Operator koalescencji wartości null (??) to wygodny sposób na użycie wartości domyślnej, gdy zmienna ma wartość null lub nie istnieje. Jest to szczególnie przydatne podczas pracy z danymi, których może brakować.

Składnia umieszcza ?? między zmienną, którą należy sprawdzić, a wartością zastępczą:

<?php
$username = null;

$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>

PHP sprawdza, czy $username ma wartość null. Ponieważ tak jest, operator zwraca zamiast tego „Guest”. Gdyby $username miał jakąś wartość, zostałaby ona użyta.

<?php
$username = "Alice";

$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>

Operator koalescencji wartości null działa również wtedy, gdy zmienna nie została w ogóle zdefiniowana, i nie powoduje błędu:

<?php
// $color nie jest nigdzie zdefiniowana
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>

Dzięki temu ?? jest czytelniejszy niż użycie operatora trójargumentowego z kontrolami isset(). To idealne rozwiązanie do ustawiania rozsądnych wartości domyślnych, gdy brakuje danych.

challenge icon

Wyzwanie

Łatwy

Odczytaj z wejścia dwie wartości: ciąg znaków nickname i ciąg znaków theme.

Użyj operatora null coalescing, aby obsłużyć potencjalnie brakujące wartości:

  1. Utwórz zmienną $userNickname o wartości null. Następnie użyj operatora null coalescing, aby przypisać zmiennej $displayNickname wartość $userNickname, jeśli istnieje i nie jest równa null; w przeciwnym razie użyj wartości wejściowej nickname.
  2. Utwórz zmienną $userTheme i przypisz jej wartość wejściową theme. Użyj operatora null coalescing, aby przypisać zmiennej $selectedTheme wartość $userTheme, jeśli istnieje i nie jest równa null; w przeciwnym razie użyj wartości domyślnej dark.
  3. Użyj operatora null coalescing bezpośrednio ze niezdefiniowaną zmienną $language (nie definiuj jej), aby przypisać zmiennej $displayLanguage wartość $language, jeśli istnieje; w przeciwnym razie użyj wartości domyślnej English.

Wypisz każdy wynik w osobnym wierszu, w tej kolejności: $displayNickname, $selectedTheme, $displayLanguage.

Przykład:

Jeśli dane wejściowe to Player1 i light, wynikiem powinno być:

Player1
light
English

Jeśli dane wejściowe to GuestUser i blue, wynikiem powinno być:

GuestUser
blue
English

Spróbuj swoich sił

<?php
// Odczytaj dane wejściowe
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));

// TODO: Napisz swój kod poniżej
// 1. Utwórz $userNickname z wartością null, a następnie użyj ??, aby przypisać wartość do $displayNickname
// 2. Utwórz $userTheme z motywem podanym na wejściu, a następnie użyj ??, aby przypisać wartość do $selectedTheme (wartość domyślna: dokładny tekst z instrukcji)
// 3. Użyj ?? z niezdefiniowaną zmienną $language, aby przypisać wartość do $displayLanguage (wartość domyślna: dokładny tekst z instrukcji)

// Wyświetl wyniki (każdy w nowej linii)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator PHP online