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.
Wyzwanie
ŁatwyOdczytaj 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:
- Utwórz zmienną
$userNicknameo wartościnull. Następnie użyj operatora null coalescing, aby przypisać zmiennej$displayNicknamewartość$userNickname, jeśli istnieje i nie jest równa null; w przeciwnym razie użyj wartości wejściowejnickname. - Utwórz zmienną
$userThemei przypisz jej wartość wejściowątheme. Użyj operatora null coalescing, aby przypisać zmiennej$selectedThemewartość$userTheme, jeśli istnieje i nie jest równa null; w przeciwnym razie użyj wartości domyślnejdark. - Użyj operatora null coalescing bezpośrednio ze niezdefiniowaną zmienną
$language(nie definiuj jej), aby przypisać zmiennej$displayLanguagewartość$language, jeśli istnieje; w przeciwnym razie użyj wartości domyślnejEnglish.
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
EnglishJeśli dane wejściowe to GuestUser i blue, wynikiem powinno być:
GuestUser
blue
EnglishSpró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";
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównaniaRówność i tożsamośćOperatory logiczne — część 1Operatory logiczne — część 2Powtórka — prosta logika2Zmienne i typy danych
LiczbyCiągi znaków i cudzysłowyWartości logiczneKonwencje nazewnictwaPodsumowanie — inicjalizacja zmiennychPuste zmienneŁączenie ciągów znakówPobieranie danych od użytkownikaKonwersja na inne typy5Instrukcje warunkowe
Instrukcja ifIf - elseOperator trójargumentowyOperator null coalescingInstrukcja switchPodsumowanie — podejmowanie decyzji3Podstawowe operatory
Operatory arytmetyczneOperator moduloOperator potęgowaniaPrzypisanie złożoneInkrementacja/dekrementacjaPriorytet operatorówPowtórka — proste obliczeniaOperatory łańcuchów znakówPoćwicz samodzielnie: Kompilator PHP online