Ternary Operator — Cara Singkat Menghemat Penggunaan Code If Else Pada Pemrograman PHP
Ternary operators (?:) atau istilah lainnya shorthand if/else.
I. The Writing Rule of Ternary Operator (?:)
$var = ekspresi1 ? ekspresi2 : ekspresi3 //Format Dasar Penulisan
jika ekspresi1
bernilai TRUE maka nilai yang dihasilkan adalah ekspresi2
, sebaliknya jika ekspresi1
bernilai FALSE, maka nilai yang dihasilkan adalah ekspresi3
. ekspresi1
, ekspresi2
dan ekspresi3
bisa berisi apa saja, termasuk fungsi.
Bentuk Code Statement If-Else Secara Umum:
$nilai = 9;
if ($nilai > 8) {
echo 'Sangat Baik';
} else {
echo 'Baik';
}
penggunaan Ternary Operator:
$nilai = 9;
echo $nilai > 8 ? 'Sangat Baik' : 'Baik'; // Baik
II. Cara Lain Penulisan Ternary Operator
PHP 5.3 ekspresi2
bisa untuk tidak dituliskan, sehingga bentuk penulisannya menjadi:
var = ekspresi1 ?: ekspresi3
yang berarti jika expresi1
bernilai TRUE makan nilai yang dihasilkan adalah ekspresi1
, sebaliknya jika FALSE, maka nilai yang dihasilkan adalah ekspresi3
. Jika ditulis dalam bentuk umum, maka bentuknya menjadi:
if ( ekspresi1 )
{
$var = ekspresi1;
} else {
$var = ekspresi3;
}
contoh
$nilai = '';
echo $nilai ?: 9; // 9
III. Penggabungan dengan string
Jika ternary operator digabungkan dengan string, maka harus menggunakan tanda kurung, sehingga PHP akan membacanya sebagai statement tersendiri, jika tidak, maka akan menghasilkan pesan error. contoh:
//ERROR: Parse error: parse error, unexpected ':'
$option ='<option value="1" '.$status == "1" ? 'selected="selected"' :''.'>Januari</option>';
//Benar:
$option ='<option value="1" '.($status == "1" ? 'selected="selected"' :'').'>Januari</option>';
IV. Nested If Else
Cara Penulisan If Else Pada PHP dengan menggunakan ternary operators dapat ditulis dengan level kedalaman yang tidak terbatas, if else
di dalam if else
(nested if else
), adapun format penulisannya adalah:
ekspresi1 ? ekspresi2 : (ekspresi3 ? ekspresi4 : (dst..))
contoh penggunaannya:
$nilai = 6;
$predikat = $nilai > 8 ? 'Sangat Baik' : ( $nilai >= 7 && $nilai <= 8 ? 'Baik' : ($nilai <= 6 && $nilai > 5 ? 'Sedang' : 'Kurang') );
echo $predikat; // Sedang
kode diatas dapat ditulis ulang menjadi:
$predikat = $nilai > 8
? 'Sangat Baik'
: ( $nilai >= 7 && $nilai <= 8
? 'Baik'
: ( $nilai <= 6 && $nilai > 5
? 'Sedang'
: 'Kurang'
)
);
echo $predikat; // Sedang
V. Contoh Penggunaan Ternary Operator (?:)
Contoh 1:
<?='Selamat Datang ' . ($this->isLogIn ? $this->_nama : 'Tamu, Silakan Login')?>
<?='Selamat Datang ' . ($this->_nama ?: 'Tamu, Silakan Login')?>
Contoh 2:
$bulan = array('1'=>'Januari',
'Februari',
'Maret' ,
'April' ,
'Mei',
'Juni',
'Juli',
'Agustus',
'September',
'Oktober',
'November',
'Desember'
);
$nilai = array(1 => 9, 7, 8, 9, 7, 10, 7, 9, 8, 8, 9, 8);
foreach ($bulan as $bln => $nama_bln)
{
// Ternary Operators
$triwulan = $bln >= 1 && $bln <= 3
? 1
: ($bln >= 4 && $bln <= 6
? 2
: ($bln >= 7 && $bln <= 9 ? 3 : 4)
);
$semester = $bln >= 1 && $bln <= 6 ? 1 : 2;
$result['triwulan'][$triwulan][$nama_bln] = $nilai[$bln];
$result['semester'][$semester][$nama_bln] = $nilai[$bln];
}
/*
Hasil:
Array
(
[triwulan] => Array
(
[1] => Array
(
[Januari] => 9
[Februari] => 7
[Maret] => 8
)
[2] => Array
(
[April] => 9
[Mei] => 7
[Juni] => 10
)
[3] => Array
(
[Juli] => 7
[Agustus] => 9
[September] => 8
)
[4] => Array
(
[Oktober] => 8
[November] => 9
[Desember] => 8
)
)
[semester] => Array
(
[1] => Array
(
[Januari] => 9
[Februari] => 7
[Maret] => 8
[April] => 9
[Mei] => 7
[Juni] => 10
)
[2] => Array
(
[Juli] => 7
[Agustus] => 9
[September] => 8
[Oktober] => 8
[November] => 9
[Desember] => 8
)
)
)*/
Referensi: https://jagowebdev.com/cara-penulisan-if-else-pada-php/
Penulis : Agus Prawoto Hadi