Strony internetoweSklepy internetoweAktualizacja stron

Skrócone operatory warunkowe

Trójoperandowy operator warunkowy.

Trójoperandowy operator warunkowy (?:)

Pozwala na skrócenie zapisu instrukcji warunkowej.

$score = 50;

if ($score > 40) {
    echo ‘high score!’;
} else {
    echo ‘low score’;
}

Powyższy zapis możemy skrócić.

$score = 50;

echo $score > 40 ? ‘high score’ : ‘low score’;

Inicjalizacja zmiennej.

$price = isset($_POST[‘price’]) ? $_POST[‘price’] : 0;

UWAGA Jeżeli zmienna ma wartość null to konstrukcja językowa isset zwraca wartość logiczną false, mimo że zmienna istnieje.

Null Coalescing Operator (??)

Dla PHP >= 7.0 powyższy kod możemy zastąpić kodem wykorzystującym Null Coalescing Operator (??).

<input type=“text” name=“title” value=”<?=htmlspecialchars($_POST[‘title’]) ?? ”?>”>

W odróżnieniu od kodu z wykorzystaniem konstrukcji isset() wartość jest zwracana i ile zmienna istnieje, a jej wartość nie jest równa null.

Możemy tworzyć łańcuch operacji z wykorzystaniem operatora ??

$username = $_POST[‘username’] ?? $_GET[‘username’] ?? ‘no passed’;

Wartość zmiennej username będzie równa wartości $_POST[‘username’] o ile ta zmienna istnieje, a jej wartość jest różna od null. Wprzeciwnym wypadku zostanie sprawdzona zmienna $_GET[‘username’], a jeżeli również ona nie spełnia tych warunków to zmiennej $username zostanie przypisany ciąg znaków no passed.

$test2 = null;
$test3 = ‘<script>alert(“test”)</script>’;

echo htmlspecialchars($test ?? $test2 ?? $test3);

W powyższym kodzie zmienna $test nie istnieje. Zmienna $test2 ma wartość null. Zmienna $test3 istnieje, a jej wartość jest różna od null. Zostanie wyświetlona wartość zmiennej $test3. Ponieważ zastosowano funkcję htmlspecialchars kod javascript się nie wykona gdyż znaki zostaną zastąpione encjami.

Kontakt

Napisz do nas

Biuro czynne jest od poniedziałku do piątku w godzinach od 9.00 do 16.00.

Wygląda ok!
Proszę wprowadzić poprawny adres e-mail.
Wygląda ok!
Proszę wprowadzić poprawny numer telefonu.
Wygląda ok!
Proszę wprowadzić treść wiadomości.

* te pola są wymagane.

Adres

  • ABM Studio Norbert Morajda
  • ul. Kopernika 22,
  • 33-170 Tuchów

Dane do przelewów

  • ABM Studio Norbert Morajda
  • PL 8732577306
  • Santander Bank Polska
  • 10 1910 1048 2125 0787 8127 0001