Operator trójargumentowy
Część sekcji Podstawy ścieżki PHP w Coddy. Lekcja 30 z 71.
Gdy masz prostą instrukcję if-else, która tylko przypisuje wartość na podstawie warunku, PHP oferuje krótszy sposób jej zapisania: operator trójargumentowy.
Składnia wykorzystuje ? i :, aby utworzyć zwięzły warunek w jednej linii:
<?php
$age = 20;
// Użycie if-else
if ($age >= 18) {
$status = "adult";
} else {
$status = "minor";
}
// To samo z operatorem trójargumentowym
$status = $age >= 18 ? "adult" : "minor";
echo $status; // adult
?>Struktura jest następująca: condition ? value_if_true : value_if_false.
PHP najpierw oblicza warunek. Jeśli jest prawdziwy, wyrażenie zwraca wartość po ?. Jeśli jest fałszywy, zwraca wartość po :.
<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // Fail
$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // Welcome back!
?>Operator trójargumentowy doskonale nadaje się do prostych przypisań typu albo-albo. W przypadku bardziej złożonej logiki z wieloma warunkami używaj instrukcji if-elseif-else, aby zapewnić lepszą czytelność.
Wyzwanie
ŁatwyOdczytaj z wejścia dwie liczby całkowite: score i passingScore.
Użyj operatora trójargumentowego, aby określić wynik na podstawie poniższych zasad:
- Jeśli
scorejest większe lub równepassingScore, wynikiem powinno byćPassed - W przeciwnym razie wynikiem powinno być
Failed
Wypisz wynik w pierwszym wierszu.
Następnie odczytaj z wejścia liczbę całkowitą quantity. Użyj operatora trójargumentowego, aby określić komunikat dotyczący wysyłki:
- Jeśli
quantityjest większe niż 10, komunikatem powinno byćFree shipping - W przeciwnym razie komunikatem powinno być
Standard shipping
Wypisz komunikat dotyczący wysyłki w drugim wierszu.
Przykład:
Jeśli dane wejściowe to 75, 60 i 15, wynik powinien być następujący:
Passed
Free shippingJeśli dane wejściowe to 45, 50 i 5, wynik powinien być następujący:
Failed
Standard shippingSpróbuj swoich sił
<?php
// Wczytaj dane wejściowe
$score = intval(fgets(STDIN));
$passingScore = intval(fgets(STDIN));
$quantity = intval(fgets(STDIN));
// TODO: Napisz swój kod poniżej
// Użyj operatora trójargumentowego, aby określić, czy wynik oznacza zaliczenie, czy niezaliczenie
// Użyj operatora trójargumentowego, aby określić komunikat dotyczący wysyłki
// Wyświetl wyniki
echo $result . "\n";
echo $shippingMessage;
?>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