U ovoj lekciji ćemo razgovarati o sledećim metodama koje se koriste da bi dugi if-else kodovi bili kraći i čitljiviji. PHP ternarni operaterSa primjerima ćete naučiti šta je i kako ga koristiti.

PHP ternarni operater je uslovni operator koji smanjuje dužinu koda prilikom izvođenja poređenja i uslova. Ovaj operator je važna alternativa korištenju if-elseif-else ili ugniježđenog if else. Naziva se ternarnim operatorom jer uzima tri operanda.

  • PHP ternarni operaterOperandi koje uzima su sljedeći:
    stanje
  • rezultat za true (vraća true ako je uslov istinit)
  • rezultat za false

PHP ternarni operater Sintaksa je sljedeća:

$variable = (condition) ? (statement1) : (statement2);

Uslov se dodaje umjesto uslova. Ako uvjet za naredbu1 vrati istinito, podaci koji se dodaju se zapisuju. Ako se uvjet za naredbu2 vrati netačan, upisuju se podaci koji se dodaju.

PHP ternarni operater

U našem prvom primjeru PHP ternarni operater'Svjedoci ćemo koliko skraćuje izjavu if-else. Ako je tačno, želimo da napravimo ime dugmeta "Odjava" jer je korisnik prijavljen, a ako korisnik nije prijavljen, želimo da napravimo naziv dugmeta "Prijava" kako bi se korisnik mogao prijaviti. Pretpostavimo da je varijabli is_user_logged_in data vrijednost true ako je korisnik prijavljen, i false ako korisnik nije prijavljen, postavljamo pitanje da li je ulog u varijablu true_login. ne. Pošto varijabla nije bila ture, kodovi iz prvog uslova nisu izvršeni i proslijeđeni su drugom bloku. Kao što znate, kodovi u bloku else se izvršavaju ako su svi ostali uslovi nevažeći. U ovom slučaju, kodovi u bloku else su izvršeni i omogućen je izlaz "Prijava".

// if else ile uzun ifade
$is_user_logged_in = false;
if ($is_user_logged_in === true) {
	echo $button_name = 'Çıkış Yap';
} else {
	echo $button_name = 'Giriş Yap';
}
// Çıktı: Giriş Yap
// ternary operator ile kısa ifade
$is_user_logged_in = false;
echo $button_name = $is_user_logged_in ? 'Çıkış Yap' : 'Giriş Yap';
// Çıktı: Giriş Yap

Sa formiranjem PHP eha PHP ternarni operaterMožemo koristiti. Pogledajmo ovo sa 2 primjera.

$number = 20;
echo ($number > 15) ? "15'ten daha büyük" : "15'ten daha büyük değil";
// Çıktı: number değişkeninin verisi 15'ten daha büyük
$number = 5;
echo ($number == 10) ? "number değişkeninin verisi 10'a eşit" : "number değişkeninin verisi 10'a eşit değil";
// Çıktı: number değişkeninin verisi 10'a eşit değil

PHP Ternary Operator Chaining (Chaining Ternary Operators)

U ovom primjeru PHP ternarni operater U njemu je novi ternarni operator. Zato ovaj izraz PHP ternarni operater Mi to nazivamo ulančavanjem ternarnih operatora.  Sada hajde da shvatimo ovaj primjer: Pretpostavimo da je varijabli $is_logged_in data vrijednost true ako je korisnik prijavljen, i false u suprotnom. $balans varijabla je korisnikovo stanje, $price varijabla je cijena proizvoda. Varijabla $message je poruka koju ćemo prikazati korisniku. Ako je varijabla is_logged_in u varijabli $message istinita, uvjet će nastaviti da se izvodi; ako je netačan, podaci "Prvo se prijavite na svoj račun da biste kupili proizvod" bit će dodijeljeni varijabli $message. Uvjet se nastavio izvoditi jer je varijabla $is_logged_in bila istinita. Kao uslov u drugom ternarnom operatoru, pitali smo da li su podaci varijable $balans ekvivalentni podacima varijable $price. Podaci varijable $balance su 24, podaci varijable $price su 30. Pošto nisu ekvivalentni, uslov nije vratio true, vratio je netačno. PHP ternarni operaterPrvi podatak od je dodijeljen samo ako je uvjet vratio istinito, drugi podatak je bio dodijeljen ako je uvjet vratio netačno. Uvjet je vratio netačan i varijabli $message je dodijeljen podatak "Nemate dovoljno sredstava za kupovinu proizvoda." Odštampali smo varijablu $message sa echo.

$is_logged_in = true; // kullanıcı giriş yaptı mı?   
$balance = 24; // bakiye
$price = 30; // ürün fiyatı
$message = $is_logged_in
			? ($balance === $price
					? 'Ürünü satın almak için yeterli bakiyeniz var'
					: 'Ürünü satın almak için yeterli bakiyeniz yok')
			: 'Ürünü satın almak için önce hesabınıza giriş yapın';
echo $message;
// Ürünü satın almak için yeterli bakiyeniz yok