ffCCBot/2.0 (http://commoncrawl.org/faq/)
Update: 11-08-2016

Penulisan If Else Pada PHP Dengan Ternary Operator ?:

Sebelumnya telah kita bahas secara penulisan umum if else pada PHP: Memahami If Else Dalam PHP (dan Elseif), selain cara tersebut, terdapat satu lagi cara penulisan if else pada PHP yaitu menggunakan ternary operators (?:) atau istilah lainnya shorthand if/else.

I. The Writing Rule of Ternary Operator (?:)

Format penulisan ternary operator adalah:

$var = ekspresi1 ? ekspresi2 : ekspresi3

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.

Jika dituliskan dengan format umum, maka bentuknya sama seperti ini:

if ( ekspresi1 ) { 
	$var = ekspresi2 
} else { 
	$var = ekspresi3 
}

contoh penggunaan ternary operator:

$nilai = 9;
echo $nilai > 8 ? 'Sangat Baik' : 'Baik'; // Baik

Contoh tersebut diatas jika ditulis dalam struktur if else biasa akan seperti:

$nilai = 9;
if ($nilai > 8) {
	echo 'Sangat Baik';
} else {
	echo 'Baik';
}

II. Cara Lain Penulisan Ternary Operator

Sejak 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 akan sedikit membingungkan dan lebih sulit diperbaiki jika terjadi kesalahan, karena terdapat tiga if else dalam satu baris kode, idealnya MAKSIMAL dua, menurut saya, jika lebih dari dua lebih baik ditulis menggunakan format seperti biasanya, namun jika ingin tetap menggunakannya gunakan format yang mudah dibaca, sehingga 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

Jika dibuat dalam bentuk if else biasa, maka bentuknya menjadi:

if ( $nilai > 8 ) {
	$predikat = 'Sangat Baik';
} else if ( $nilai >= 7 && $nilai <= 8 ) {
	$predikat = 'Baik';
} else if ( $nilai <= 6 && $nilai > 5 ) {
	$predikat = 'Sedang';
} else {
	$predikat = 'Kurang';
}

IV. Keuntungan Menggunakan Ternary Operator (?:)

Beberapa keuntungan penulisan if else pada PHP dengan ternary operator adalah:

  1. Penulisan if else menjadi lebih cepat dan singkat karena tidak perlu menuliskan keyword if dan else;
  2. Kode menjadi lebih mudah dibaca, terutama ketika kode yang kita tulis inline (satu baris), selain itu lebih mudah digabungkan dengan string, dll
  3. Perbaikan kode menjadi lebih mudah.

V. Tips Menggunakan Ternary Operator (?:)

Berikut ini beberapa tips penggunaan ternary operator:

  1. Seperti pada contoh sebelumnya, untuk kode yang cukup panjang, jika memungkinkan buat beberapa baris kode, agar lebih mudah dibaca dan diperbaiki.
  2. Gunakan tanda kurung yang cukup namun tidak berlebihan agar kode lebih terorganisir.
  3. Jika belum terbiasa menggunakan model ternary, tulis kode dalam bentuk standar kemudian terjemahkan ke dalam bentuk ternary operator.

VI. Contoh Penggunaan Ternary Operator (?:)

<?='Selamat Datang ' . ($this->isLogIn ? $this->_nama : 'Tamu, Silakan Login')?>
<?='Selamat Datang ' . ($this->_nama ?: 'Tamu, Silakan Login')?>
$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
                )
        )
)*/

Demikian pembahasan mengenai cara penulisan If Else pada PHP dengan ternary operator (?:), semoga bermanfaat

Recomended Post

6 Feedback dari pembaca

  • mas ,tolong dong ,mngkin ini bukan tmpt yang pas untuk pembahasan tutorial di atas,
    aku mau buat falidasi,untuk pengecekan data yang sama,kok malah ketika aku input data yang sma malah tidak keluar peringatan bahwa data uda ada yang sama,tolong dong pencerahan nya

  • mas, apakah ternary operator bisa digunakan untuk kasus seperti ini ?

    if ( ekspresi1 ) { 
    	$var = ekspresi2 
    } else { 
    	$var = ekspresi3 ;
            $var1 = ekspresi4
    }
    

    kalau bisa bagaimana cara penulsainnya?

  • saya punya query seperti ini
    $sql = “SELECT nasabah.noid as noid,
    nasabah.nama as nama,
    nasabah.tanggal as tanggal,
    nasabah.id_wdh as id_wdh,
    majelis.n_maj as n_maj,
    sub.n_sub as n_sub,
    ((SELECT SUM(kredit)FROM shu_pw WHERE noid=nasabah.noid)-(SELECT SUM(debet) FROM shu_pw where noid=nasabah.noid))as shu ,
    ((SELECT sum(kredit) FROM simpanan WHERE noid=nasabah.noid and simpanan.tgl <='$sampai') – (SELECT sum(debet) FROM simpanan WHERE noid=nasabah.noid and simpanan.tgl <= '$sampai')) as total
    FROM nasabah
    inner join majelis using (id_maj)
    inner join sub using (id_sub)
    ORDER BY nasabah.noid";

    Hasilnya Saldo =Rp.177.715.000,00
    dan query seperti ini
    $simpanan=mysql_query("SELECT noid,id_jenis,tgl,sum(debet) as debet,
    SUM(kredit) as kredit,(sum(kredit)-sum(debet)) as hasil from simpanan
    where tgl <'$daria' and tgl <'$kea'");
    $simpanan1=mysql_fetch_array($simpanan);
    hasil nya saldo =Rp.177.815.000,00
    Jadi ada selisih Rp.100.000 dan tentunya yang benar adalah yang pertama dan yg kedua kelebihan Rp.100.000 jadi Mas Agus kelirunya dimana yaa…?Trimaksih

Silakan tinggalkan komentar

Like Us

Dapatkan update artikel terbaru via E-Mail
  1. Tutorial PHP Form II: Menampilkan Hasil Input Form HTML dengan PHP
  2. Tutorial PHP Form I: Menghubungkan Form HTML dengan PHP
  3. Menampilkan Data Dari Beberapa Tabel MySQL – JOIN Pada MYSQL
  4. Memahami dan Menampilkan Tanggal dan Waktu Pada PHP
  5. Menghitung Selisih Waktu Dengan PHP – Cara Termudah
  6. Memahami Fungsi Date Pada PHP
  7. Memahami Fungsi Time, Strtotime, dan Mktime Pada PHP – Memanipulasi Waktu
  8. Memahami Zona Waktu (Timezone) dan Selisih Waktu Pada PHP
  9. Setting ODBC MySQL Untuk Gammu
  10. Cara Install dan Menggunakan Gammu di Windows