U ovoj lekciji raspravljat ćemo o sljedećim metodama koje se koriste kako bi dugi if-else kodovi bili kraći i čitljiviji. PHP ternarni operatorNa primjerima ćete naučiti što je i kako to koristiti.

PHP ternarni operator je uvjetni operator koji smanjuje duljinu koda prilikom izvođenja usporedbi i uvjeta. Ovaj je operator važna alternativa korištenju if-elseif-else ili ugniježđenog if else. Naziva se ternarni operator jer uzima tri operanda.

  • PHP ternarni operatorOperandi koje uzima su sljedeći:
    stanje
  • rezultat za istinito (vraća istinito ako je uvjet istinit)
  • rezultat za lažno

PHP ternarni operator Sintaksa je sljedeća:

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

Umjesto uvjeta dodaje se uvjet. Ako uvjet za statement1 vrati true, podaci koji se dodaju su zapisani. Ako uvjet za statement2 vrati false, podaci koji se dodaju su zapisani.

PHP ternarni operator

U našem prvom primjeru PHP ternarni operator'Svjedočit ćemo koliko to skraćuje if-else iskaz. Ako je istinito, želimo dati naziv gumba "Odjava" jer je korisnik prijavljen, a ako korisnik nije prijavljen, želimo postaviti naziv gumba "Prijavi se" tako da se korisnik može prijaviti. Pretpostavimo da je varijabli is_user_logged_in dana vrijednost istinita ako je korisnik prijavljen, i lažna ako korisnik nije prijavljen. U uvjetu if ispitivali smo je li is_user_logged_in varijabla je istinita ili ne. Budući da varijabla nije bila ture, kodovi u prvom uvjetu nisu bili izvršeni i proslijeđeni su bloku else. Kao što znate, kodovi u bloku else izvršavaju se ako su svi ostali uvjeti 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

S formiranjem PHP odjeka PHP ternarni operatorMožemo koristiti. Pogledajmo ovo na 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 ternarno ulančavanje operatora (ulančavanje ternarnih operatora)

U ovom primjeru PHP ternarni operator U njemu postoji novi ternarni operator. Zato ovaj izraz PHP ternarni operator To zovemo ulančavanje ternarnih operatora.  Sada shvatimo ovaj primjer: Pretpostavimo da je varijabli $is_logged_in dana vrijednost true ako je korisnik prijavljen, a false u suprotnom. Varijabla $balance je stanje korisnika, varijabla $price je cijena proizvoda. Varijabla $message je poruka koju ćemo prikazati korisniku. Ako je varijabla is_logged_in u varijabli $message istinita, uvjet će se nastaviti izvršavati; ako je false, podatak "Prvo se prijavite na svoj račun za kupnju proizvoda" bit će dodijeljen varijabli $message. Uvjet se nastavio izvoditi jer je varijabla $is_logged_in bila istinita. Kao uvjet u drugom ternarnom operatoru, pitali smo jesu li podaci varijable $balance ekvivalentni podacima varijable $price. Podaci varijable $balance su 24, podaci varijable $price su 30. Budući da nisu ekvivalentni, uvjet nije vratio true, vratio je false. PHP ternarni operatorPrvi podatak dodijeljen je samo ako je uvjet vratio true, drugi podatak je dodijeljen ako je uvjet vratio false. Uvjet je vratio false i varijabli $message dodijeljen je podatak "Nemate dovoljno sredstava za kupnju proizvoda." Ispisali smo varijablu $message s 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