Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Comparison Ternary - różnice w zastosowaniu
Forum PHP.pl > Forum > Przedszkole
nyfko
Cześć. Chcę szybko do zmiennej przypisać jedną zmienną, używając domyślnej wartości jeżeli ta zmienna jest pusta więc znalazłem coś takiego:

  1. $owoc = $_GET['owoc'] ?: 'banan';


Jeżeli $_GET będzie pusty, to do zmiennej powinno być przypisane 'banan'.
Jednak niektórzy robią to też tak:

  1. $owoc = $_GET['owoc'] ? $_GET['owoc'] : 'banan';



Praktyczny przykład jaki znalazłem, to sprawdzenie IP mając chmurę Cloudflare na stronie. CF podaje takie rozwiązanie:
  1. $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"] ? $_SERVER["HTTP_CF_CONNECTING_IP"] : $_SERVER["REMOTE_ADDR"];


Dlaczego nie może być krócej?
  1. $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"] ?: $_SERVER["REMOTE_ADDR"];


Co za różnica? Czy któreś rozwiązanie jest "bardziej poprawne" od drugiego? Jeszcze inni wplątują w to isset() ale to już pomijam.

Z góry dzięki za pomoc.
KsaR
Co tu duzo pisac...
?: jest od php 5.3 a ?...: byc moze nawet od poczatku tongue.gif
Czyli:
Niektore przykladzie w necie są za stare, a inne dla "wstecznej kompatybilności".
nyfko
Wielkie dzięki ! wink.gif
Pyton_000
Poza tym jest błednie bo wywali bład.

Nie możesz użyć w tym wypadku ternary

Poprawnie
  1. $owoc = !empty($_GET['owoc']) ? $_GET['owoc'] : 'banan';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.