Menyingkat Kode PHP menggunakan Operator Ternary (?:)

Salah satu konsep dasar pemrograman yang penting adalah pernyataan bersyarat, atau lebih dikenal dengan istilah percabangan. Percabangan adalah suatu kondisi yang dipakai oleh bahasa pemrograman untuk mengatur alur logika program. Dalam bahasa pemrograman PHP setidaknya dikenal 2 macam percabangan, yaitu if/else dan switch/case.

Percabangan dengan if/else dapat disederhanakan menggunakan operator ternary. Contoh operator ternary bisa dijumpai pada artikel ini, ini, dan ini. Operator ternary memiliki bentuk dasar sebagai berikut:

(pernyataan1) ? (pernyataan2) : (pernyataan3)

Bentuk di atas memiliki arti: jika “pernyataan1” adalah benar, nilai kembalian adalah “pernyataan2”, dan jika sebaliknya, nilai kembalian adalah “pernyataan3”. Untuk lebih jelasnya, perhatikan contoh berikut.

<?php
$var = 7;
$cek_var = $var > 5 ? true : false;

Pada contoh di atas nilai variable $cek_var adalah true, karena pernyataan nilai $var lebih besar dari 5 adalah benar. Berikut ini adalah padanannya dalam bentuk if/else.

<?php
$var = 7;
if ($var > 5)
  $cek_var = true;

else
  $cek_var = false;

Contoh aplikasi di dunia nyata adalah seperti yang biasa digunakan untuk memberikan nilai default pada sebuah variable.

<?php
$action = !isset($_POST['action']) ? 'default' : $_POST['action'];

Kode di atas identik dengan:

<?php
if (!isset($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}

Bonus:
Operasi menghitung jumlah hari (termasuk memeriksa tahun kabisat) dalam satu bulan menggunakan operator ternary bertingkat.

<?php
$bulan = 2; // bulan Februari
$tahun = 2012; // ini tahun kabisat

$jumlah_hari = ($bulan == 2 ? ($tahun % 4 ? 28 : ($tahun % 100 ? 29 : ($tahun %400 ? 28 : 29))) : (($bulan - 1) % 7 % 2 ? 30 : 31));
echo $jumlah_hari;

About Sibudi

Ubuntu user | Loves books | Blogger | Web Developer | Learn PHP, JavaScript, Ruby & Python the hard way

14. February 2012 by Sibudi
Categories: PHP | Tags: , , | 2 comments

Comments (2)

  1. Pingback: Troubleshooting "Unexpected T_ECHO" pada Operator Ternary | Sibudi </>

  2. Pingback: Operator Ternary dan Nilai Boolean | Sibudi </>

Leave a Reply

Required fields are marked *