Memahami lebih dalam Ternary dan Null Coalescing Operator pada PHP 7

Rifqi Khoeruman Azam
3 min readAug 28, 2019

--

ternary operator

Salah satu bagian terpenting dalam programming adalah mengevaluasi kondisi dengan sintaks if-else, tetapi untuk mengevaluasi suatu kondisi dengan if-else serasa tidak efektif karena akan terlalu panjang. Oleh karena itu kita bisa menggunakan Ternary Operator dan Null Coalescing Operator, sehingga penulisan if-else akan lebih singkat.

Ternary dan Null Coalecing merupakan salah satu operator bawaan pada bahasa C. Namun setelah php 5 ternary operator dapat digunakan sedangkan untuk Null Coalescing di php versi 7.

Ternary Operator (?:)

Pada umumnya di semua bahasa pemrograman penulisan ternary operator sama yaitu:

(kondisi) ? value jika kondisi benar : value jika kondisi salah

contoh:

<?php
$nomor = 100;
echo $nomor >= 80 ? "Lebih dari dan sama dengan 80" : "Kurang dari 80";// Lebih dari dan sama dengan 80

contoh lainnya

<?php
//contoh #1 , menset default value
$submit = isset($_POST['submit']) ? $_POST['submit'] : null;
// kode diatas adalah untuk if-else seperti ini
if(isset($_POST['submit']){
$submit = $_POST['submit'];
}else {
$submit = null;
}
//contoh #2
echo ((true ? 'true' : false) ? 't' : 'f'); // t

Contoh lain untuk if-elseif-else statement:

$nilai = 50;
echo ($nilai >= 90) ? "Sangat Bagus" : ($nilai >= 80 ? "Bagus" : ($nilai > 70 ? "Biasa ah" : "Jelek")); //jelek
// jika menggunakan if-elseif-if
if($nilai >= 90){
echo "Sangat Bagus";
} else if($nilai >= 80) {
echo "Bagus";
} else if($nilai > 70) {
echo "Biasa ah";
} else {
echo "Jelek";
}

atau kita juga bisa menulisnya seperti ini

<?php
$nama = null;
echo $nama ?: "Azam";
//jika ditulis dengan lengkap
echo $nama ? $nama : "Azam";

Dengan ternary ini memang akan lebih singkat, tetapi jika percabangan if-else terlalu kompleks maka tetap lebih baik menggunakan if-else dibanding ternary operator.

Null Coalescing Operator (??)

Operator ?? dikenal juga dengan Null Coalescing. Operator ini akan mereturn value disebelah kiri jika tidak bernilai null, jika null maka mereturn sebelah kanan.

hmmm.. masih bingung ya?, perhatikan contoh dibawah

<?php$num = $nilai ?? 75;
echo $num; //output: 75

dari contoh diatas variable $nilai sama sekali belum dideklarasikan. Nah dengan operator ?? akan mengecek jika variable $nilai kosong (null), maka akan mereturn value sebelah kanannya yaitu 75 sedangkan apabila $nilai sudah ditentukan maka variable $num akan berisi $nilai.

<?php
$nilai = 50;
$num = $nilai ?? 75;
echo $num; //output 50

Operator ini sangat berguna untuk menentukan default value, seperti halnya pada contoh ternary diatas kita menggunakan isset() untuk mengecek apakah variable tersebut sudah diset atau belum. maka kita dapat menulisnya lebih singkat lagi.

<?php
//ternary operator
$nama = isset($_POST['nama']) ? $_POST['nama'] : "default";
// dengan operator null coalescing menjadi seperti ini.
$nama = $_POST['nama'] ?? "default";

contoh lainnya:

<?phpvar_dump(0 ?? 1); //0
var_dump(null ?? 1); //1
var_dump(false ?? $d ?? 8); //false
var_dump(false ?? ($d ?? 8)); //false
var_dump($pasangan ?? 'jomblo'); //jomblo

Kenapa $pasangan ?? 'jomblo' menghasilkan output jomblo ?

karena variable $pasangan belum dideklarasikan alias masih null . :D

itu saja sedikit penjelasan tentang operator ternary dan operator null coalescing, semoga bermanfaat.

Referensi:

--

--

No responses yet