PHP #10 - Operator (Bag. I)

12 Sep 2020 • ⏳ ~ 9 menit

 

Operator merupakan sebuah simbol dengan fungsi tertentu yang mengembalikan hasil operasi dari operand. Beberapa jenis operator mungkin sudah tidak asing bagi kita, seperti penjumlahan, pengurangan, perkalian, dan pembagian.

Berikut beberapa jenis operator dalam PHP.

Ternary Operator

Ternary Operator merupakan singkatan/shorthand dari conditional statement. Penulisan ternary operator menggunakan tanda ?: sebagai pengganti if - else.

Sintaks ternary operator

<?php
  (Condition) ? (StatementWhenTrue) : (StatementWhenFalse);
?>
  • Condition merupakan expression yang memuat kondisi untuk menghasilkan nilai boolean berupa true dan false.
  • StatementWhenTrue berisi statement yang akan dieksekusi jika Condition terpenuhi (true).
  • StatementWhenFalse berisi statement yang akan dieksekusi jika Condition tidak terpenuhi (false) .

Mari kita perhatikan contoh penerapannya dalam kode berikut.

<?php
  $studentMark = 70;

  echo $studentMark >= 80 ? "LULUS" : "GAGAL";
  // Output: GAGAL
?>

$studentMark >= 80 merupakan Condition untuk mengecek apakah nilai dari variabel $studentMark bernilai lebih atau sama dengan 80. Jika Condition terpenuhi, string “LULUS” akan dikembalikan operator ini untuk ditampilkan. Sebaliknya, string “GAGAL” akan ditampilkan. Pada contoh di atas, nilai dari $studentMark adalah 70, sehingga string “GAGAL” ditampilkan.

Berikut kode conditional yang memiliki tujuan yang sama dengan kode sebelumnya.

<?php
  $studentMark = 70;

  if ($studentMark >= 80) {
    echo "LULUS";
  } else {
    echo "GAGAL";
  }
  // Output: GAGAL
?>

Lebih mudah dan singkat menggunakan ternary operator, bukan?

Apakah kita masih dapat menggunakan ternary operator jika memiliki beberapa kondisi?

Ya, kita masih dapat menggunakan ternary operator untuk beberapa kondisi. Mari kita perhatikan contoh penerapan ternary operator berikut.

<?php
  $studentMark = 80;

  echo $studentMark > 80 ? "A" : ($studentMark >= 50 ? "B" : "C");
  // Output: B
?>

Kode di atas memiliki cara kerja yang sama dengan kode berikut.

<?php
  $studentMark = 80;

  if ($studentMark > 80) {
    echo "A";  
  } else {
    if ($studentMark >= 50) {
      echo "B";
    } else {
      echo "C";
    }
  }
  // Output: B
?>

Jika jumlah kondisinya relatif sedikit, penggunaan ternary operator sangatlah efisien. Namun, apabila terdapat banyak kondisi yang dapat membingungkan, kita lebih disarankan menggunakan bentuk conditional (if-else).

Kita juga dapat menerapkan ternary operator tanpa memberikan StatementWhenTrue. Penulisan jenis ini bertujuan memberikan nilai default terhadap suatu variabel. Penulisan tersebut dikenal sebagai Elvis Operator. Jika kondisi terpenuhi (bernilai true), nilai dari kondisi itu yang dikembalikan, sebaliknya nilai dari StatementWhenFalse yang dikembalikan.

Mari kita perhatikan contoh berikut.

<?php
  $stringFive = '5';

  $newNumber = $stringFive ?: 5;
  // $newNumber = $stringFive ? $stringFive : 5;

  var_dump($newNumber);
  # Output:  string(1) "5"

  $newNumber = $integerFour ?: 4;
  // $newNumber = $integerFour ? $integerFour : 4;

  var_dump($newNumber);
  # Output:  int(4)
?>

Null Coalescing Operator

Null Coalescing(??) merupakan gabungan dari ternary operator (?) dan fungsi isset(). Operator ini bertujuan untuk mengidentifikasi nilai suatu variabel. Jika variabel tersebut tidak memiliki nilai ataupun bernilai NULL, statement setelah operator ?? akan dijalankan. Mari kita perhatikan contoh penerapannya.

<?php
  # Null Coalescing Operator
  $firstGuy = "Cristiano Ronaldo";
  
  echo $firstGuy ?? "Anonymous";
  echo $secondGuy ?? "Anonymous";
?>

Kode di atas memiliki cara kerja yang sama dengan kode berikut.

<?php
  # Ternary Operator dan fungsi isset()
  $firstGuy = "Cristiano Ronaldo";
  
  echo isset($firstGuy) ? $firstGuy : "Anonymous";
  echo isset($secondGuy) ? $secondGuy : "Anonymous";
?>

Variabel $firstGuy diidentifikasi terlebih dahulu apakah memiliki nilai dan bukan NULL. Jika terpenuhi, nilai variabel $firstGuy yang dikembalikan operator. Sebaliknya, string “Anonymous” yang dikembalikan. Hasil kembalian operator ini yang akan ditampilkan. Demikian juga cara kerja operator ini pada variabel $secondGuy. Hasil output dari kedua kode di atas adalah:

Cristiano Ronaldo
Anonymous

Spaceship Operator

Spaceship Operator (<=>) dikenal sebagai three-way comparison operator yang bertujuan untuk membandingkan dua variabel. Operator ini dapat diterapkan pada nilai bertipe data integer, float, string, array, dan object. Operator ini disediakan mulai dari PHP 7.

Terdapat beberapa hasil kembalian dari spaceship operator, antara lain:

  • Mengembalikan nilai 0 jika variabel sebelah kiri dari operator dan variabel sisi kanan sama besar.
  • Mengembalikan nilai 1 jika variabel sebelah kiri dari operator lebih besar dari variabel sisi kanan.
  • Mengembalikan nilai -1 jika variabel sebelah kiri dari operator lebih kecil dari variabel sisi kanan.

Agar lebih mengerti spaceship operator, mari kita perhatikan contoh berikut.

<?php
  $one = 1;
  $two = 2;
  $three = 3;
  $stringOne = '1';

  echo $one <=> $two;         // Output: -1
  echo $three <=> $one;       // Output: 1
  echo $one <=> $one;         // Output: 0
  echo $stringOne <=> $one;   // Output: 0
?>

Execution Operator

Execution Operator merupakan operator yang digunakan untuk menulis perintah yang dijalankan pada shell dan mengembalikan hasil eksekusi dari perintah tersebut. Operator ini dijalankan dengan tanda backtick (` `) ataupun dengan perintah shell_exec(). Mari kita perhatikan contoh penerapannya.

<?php
  $npmVersion = `npm -v`;
  $nodeVersion = shell_exec('node -v');

  echo $npmVersion;   // Output: 6.14.4
  echo $nodeVersion;  // Output: v12.17.0
?>

Hasil kode di atas hanyalah contoh yang dapat berbeda tergantung node dan npm yang ter-install pada perangkat.

Increment & Decrement

Increment dan Decrement merupakan operator matematis yang digunakan untuk menambah dan mengurangi variabel angka dengan nilai 1. Penambahan dan pengurangan dapat diterapkan di awal (pre-increment dan pre-decrement), juga dapat diterapkan di akhir (post-increment dan post-decrement).

Operator increment ditandai dengan ++ dan operator decrement ditandai dengan --. Mari kita perhatikan contoh penerapannya pada kode-kode berikut.

<?php
  $number = 10;

  // Pre-Increment
  // Nilai $number ditambah 1, kemudian ditampilkan
  echo ++$number;
  # Output: 11

  // Post-Increment   
  // Nilai $number ditampilkan, kemudian ditambah 1
  echo $number++;
  # Output: 11

  echo $number;
  # Output: 12
  
  // Pre-Decrement
  // Nilai $number dikurang 1, kemudian ditampilkan
  echo --$number;
  # Output: 11

  // Post-Decrement   
  // Nilai $number ditampilkan, kemudian dikurang 1
  echo $number--;
  # Output: 11

  echo $number;
  # Output: 10
?>

Logical Operator

Logical Operator merupakan operator yang berfungsi untuk membandingkan kondisi logika tertentu. Hasil yang dikembalikan adalah nilai dengan tipe data boolean. Terdapat beberapa logical operator, antara lain:

AND - &&

Operator logika AND/&& merupakan operator yang hanya akan mengembalikan nilai kebenaran true jika kondisi logika kedua sisi memiliki nilai kebenaran true. Untuk lebih rinci, mari kita perhatikan tabel kebenaran logika berikut.

Kondisi-1Kondisi-2Hasil
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

Mari kita perhatikan contoh penerapannya pada kode berikut.

<?php
  $andrewMoney = 80;
  $rabeccaMoney = 90;

  if ($andrewMoney < $rabeccaMoney && $rabeccaMoney === 80) {
    echo "They are rich";       // jika true
  } else {
    echo "They're not rich";    // jika false
  }
?>

Kita juga dapat menggantikan tanda && dengan keyword AND. Perhatikan contoh berikut.

<?php
  $andrewMoney = 80;
  $rabeccaMoney = 90;

  if ($andrewMoney < $rabeccaMoney AND $rabeccaMoney === 80) {
    echo "They are rich";       // jika true
  } else {
    echo "They're not rich";    // jika false
  }
?>

Kedua kode di atas akan menjalankan proses yang sama dan menghasilkan output yang sama pula, berupa:

They're not rich

Mengapa hasilnya They're not rich ?

Kondisi-1 : $andrewMoney < $rabeccaMoney bernilai true, karena 80 < 90 merupakan pernyataan logika yang benar.
Kondisi-2 : $rabeccaMoney === 80 bernilai false, karena 90 === 80 bukanlah pernyataan logika yang benar.

Menurut tabel kebenaran, ketika salah satu kondisi bernilai false untuk operator AND/&&, operator ini akan mengembalikan nilai false. Sehingga, blok else akan dieksekusi.

OR - ||

Operator logika OR/|| merupakan operator yang hanya akan mengembalikan nilai kebenaran false jika kondisi logika kedua sisi memiliki nilai kebenaran false. Untuk lebih rinci, mari kita perhatikan tabel kebenaran logika berikut.

Kondisi-1Kondisi-2Hasil
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

Mari kita perhatikan contoh penerapan operator ini.

<?php
  $andrewMoney = 80;
  $rabeccaMoney = 90;

  if ($andrewMoney < $rabeccaMoney || $rabeccaMoney === 80) {
    echo "They are rich";       // jika true
  } else {
    echo "They're not rich";    // jika false
  }
?>

Tanda || dapat juga kita gantikan dengan keyword OR. Perhatikan contoh kode berikut.

<?php
  $andrewMoney = 80;
  $rabeccaMoney = 90;

  if ($andrewMoney < $rabeccaMoney OR $rabeccaMoney === 80) {
    echo "They are rich";       // jika true
  } else {
    echo "They're not rich";    // jika false
  }
?>

Hasil output kedua kode di atas adalah sebagai berikut.

They are rich

Mengapa output kode tersebut They are rich ?

Kondisi-1 : $andrewMoney < $rabeccaMoney bernilai true, karena 80 < 90 merupakan pernyataan logika yang benar.
Kondisi-2 : $rabeccaMoney === 80 bernilai false, karena 90 === 80 bukanlah pernyataan logika yang benar.

Oleh karena itu, hasil kembalian dari operator ini adalah true sebab kedua sisi kondisi operator ini tidak bernilai false. Sehingga, blok if akan dieksekusi.

XOR

Operator XOR akan mengembalikan nilai true jika hanya salah satu dari kondisi operator bernilai true. Selain dari kondisi tersebut, operator akan mengembalikan nilai false. Untuk lebih rinci, mari kita perhatikan tabel kebenaran logika XOR berikut.

Kondisi-1Kondisi-2Hasil
truetruefalse
truefalsetrue
falsetruetrue
falsefalsefalse

Mari kita perhatikan contoh penerapan XOR pada kode berikut.

<?php
  $andrewMoney = 80;
  $rabeccaMoney = 90;

  if ($andrewMoney < $rabeccaMoney XOR $rabeccaMoney === 90) {
    echo "They are rich";       // jika true
  } else {
    echo "They're not rich";    // jika false
  }
?>

Hasil output dari kode tersebut adalah:

They're not rich

Mengapa blok else yang dieksekusi? Mari kita simak penjelasan berikut.

Kondisi-1 : $andrewMoney < $rabeccaMoney bernilai true, karena 80 < 90 merupakan pernyataan logika yang benar.
Kondisi-2 : $rabeccaMoney === 90 bernilai true, karena 90 === 90 adalah pernyataan logika yang benar.

Karena kedua sisi kondisi bernilai true, operator XOR mengembalikan nilai false. Sehingga, blok else akan dieksekusi.

NOT

Operator NOT merupakan negasi yang berfungsi mengembalikan kebalikan nilai kebenaran yang dilekati operator ini. Operator ini menggunakan tanda !. Jika nilai yang dilekati bernilai true, operator ini akan mengembalikan nilai false, begitu juga sebaliknya. Untuk lebih mengerti tentang operator ini, mari kita perhatikan contoh berikut.

<?php
  $booleanValue = true;

  if (!$booleanValue) {
    echo "Negasi dari false adalah true.";  // jika true
  } else {
    echo "Negasi dari true adalah false.";  // jika false
  }
?>

Hasil output dari kode tersebut adalah sebagai berikut.

Negasi dari true adalah false.

Karena nilai dari variabel $booleanValue adalah true, hasil negasi nilai tersebut menjadi false. Sehingga, blok else akan dieksekusi.

String Operator

String Operator merupakan operator yang digunakan untuk menggabungkan dua buah string. Operator ini memanfaatkan tanda . yang dapat digunakan berulang kali untuk menggabungkan banyak string. Kita juga dapat menggunakan .= sebagai pengganti dari assignment operator string. Operator ini diimplementasi pada string concatenation. Untuk lebih mengerti tentang operator ini, mari kita perhatikan contoh berikut.

<?php
  $hello = "Hello";
  $world = " World";

  echo $hello . $world . " adalah nama program komputer pertama kali saat memulai pemrograman.";

  $hello .= " World";
  // $hello = $hello . " World"
  echo $hello . "!!!";
?>
Hello World adalah nama program komputer pertama kali saat memulai pemrograman.
Hello World!!!
PHP

PHP #11 - Operator (Bag. II)

PHP #09 - Konstanta

comments powered by Disqus