Operator PHP
Operator merupakan sesuatu yang membutuhkan satu atau lebih nilai (ekspresi) dan menghasilkan nilai lain. Misalnya, ketika kita ingin menjumlahkan dua buah angka, kita membutuhkan operator +
(tambah) yang bertugas untuk menjumlahkan dua buah nilai dan menghasilkan nilai hasil penjumlahan.
Kali ini kita akan mempelajari secara detail mengenai operator-operator yang bisa kita gunakan di PHP, mulai dari urutan prioritas operator, mempelajari bagaimana pengelompokan operator berdasarkan jumlah nilai yang dibutuhkannya (seperti unary, biner, dan ternary), dan jenis-jenis operator.
Berikut beberapa topik yang akan kita bahas terkait operator di PHP:
Prioritas Operator
Prioritas operator menentukan bagaimana mengikat atau mengelompokkan dua ekspresi atau mana yang harus dievaluasi terlebih dahulu.
Misalnya, kita memiliki ekspresi berikut: 2 + 3 * 5
, berapa hasilnya?
Ada dua kemungkinan hasil yang bisa kita dapatkan, yaitu:
- Hasil
25
- kami menjumlahkan terlebih dahulu2 + 3
menghasilkan5
, kemudian mengalikannya dengan5
, sehingga5 * 5
hasilnya25
. - Hasil
17
- kami menjumlahkan perkalian terlebih dahulu3 * 5
menghasilkan15
kemudian menjumlahkannya dengan2
, yaitu2 + 15
hasilnya17
.
Ketika kita menulis ekspresi di atas di dalam kode PHP, ini akan menghasilkan nilai 17
, sesuai dengan aturan matematika yang kita pelajari disekolah, dimana operator perkalian (*
) memiliki prioritas yang lebih tinggi dibanding penjumlahan (+
).
Jadi, jawaban yang benar adalah jawabn kedua, 17
.
Ketika dalam satu ekspresi berisi operator yang memiliki prioritas yang sama, sifat asosiatif mereka memutuskan bagaimana operator dikelompokan.
Misalnya, 1 + 2 + 3
memiliki asosiatif kiri, jadi interpreter PHP akan mengelompokkannya sebagai berikut: (1 + 2) + 3
hasilnya 5
.
Contoh lain, $a = $b = $c
, operator =
memiliki sifat asosiatif kanan, oleh karena itu ekspresi ini dikelompokkan sebagai berikut $a = ($b = $c)
.
Bagaimana jika kita ingin secara eksplisit memaksa urutan prioritas, kita bisa mengelompokkannnya menggunakna tanda kurung.
Misalnya, kami ingin ekspresi berikut 2 + 3 * 5
menghasilkan nilai 25
bukan 17
, maka kita bisa mengelompokkannya sebagai berikut (2 + 3) * 5
.
Penggunaan tanda kurung, bahkan ketika tidak benar-benar diperlukan, seringkali dapat meningkatkan keterbacaan kode dengan membuat pengelompokkan menjadi eksplisit daripada mengandalkan urutan prioritas operator implisit dan asosiatif.
Tabel berikut mencantumkan urutan prioritas operator dari tertinggi hingga terendah, operator di baris yang sama memiliki prioritas yang sama.
Asosiatif | Operator |
---|---|
- | clone , new |
kanan | ** |
- | + , - , ++ , -- , ~ , (int) , (float) , (string) , (array) , (object) , (bool) , @ |
kiri | instanceof |
- | ! |
kiri | * , / , % |
kiri | + , - , . |
kiri | << , >> |
- | < , <= , > , >= |
- | == , != , === , !== , <> , <=> |
kiri | & |
kiri | ^ |
kiri | | |
kiri | && |
kiri | || |
kanan | ?? |
- | ? : |
kanan | = , += , -= , *= , **= , /= , .= , %= , &= , |= , ^= , <<= , >>= , ??= |
- | yield from |
- | yield |
- | print |
kiri | and |
kiri | xor |
kiri | or |
Pengelompokkan Operator Berdasarkan Jumlah Nilai
Kita mungkin pernah mendengar operator yang disebut unary, biner, atau ternary, apa yang dimaksud dari ketiganya?
Operator unary adalah operator yang membutuhkan satu nilai atau operan, misalnya operator increment n++
, contoh 2++
, atau operator logika not !n
, conoth !true
. Angka 2
dan boolean true
dalam contoh adalah nilai yang dimaksud.
Operator biner (binary) adalah operator yang membutuhkan dua nilai, misalnya operator aritmatika penjumlahan (y + x
).
Terakhir, operator ternary adalah operator yang membutuhkan tiga nilai (x ? y : z
).
Jadi, singkatnya:
- Ternary - membutuhkan satu nilai.
- Biner - membutuhkan dua nilai.
- Ternary - membutuhkan tiga nilai.
Jenis-jenis Operator PHP
Ada banyak jenis operator yang bisa kita gunakan di PHP, mari kita pelajari satu per satu mulai dari yang paling sering digunakan.
Operator Aritmatika
Masih ingat pelajaran matematik aritmatika dasar di sekolah? operator-operator ini bekerja dengan cara yang sama seperti yang telah kita pelajari.
Operator-operator ini biasanya digunakan untuk melakukan kalkulasi pada nilai dengan tipe angka seperti integer atau floating point.
Berikut daftar operator aritmatika yang bisa kita gunakan:
Nama | Sintaks | Deskripsi |
---|---|---|
Identitas | +$a | Konversi $a ke integer atau floating point |
Negasi | -$a | Kebalikan dari $a |
Penjumlahan | $a + $b | Jumlah $a dan $b |
Pengurangan | $a - $b | Kurangi $a dengan $b |
Perkalian | $a * $b | Kalikan $a dengan $b |
Pembagian | $a / $b | Bagi $a dengan $b |
Modulus | $a % $b | Sisa pembagian $a dengan $b |
Eksponen | $a ** $b | $a pangkat $b |
Contoh:
$identitas = +true;
$negasi = -13;
$penjumlahan = 1 + 2;
$pengurangan = 5 - 2;
$perkalian = 3 * 2;
$pembagian = 6 / 2;
$modulus = 7 % 2;
$eksponen = 3 ** 5;
var_dump($identitas); // int(1)
var_dump($negasi); // int(-13)
var_dump($penjumlahan); // int(3)
var_dump($pengurangan); // int(3)
var_dump($perkalian); // int(6)
var_dump($pembagian); // int(3)
var_dump($modulus); // int(1)
var_dump($eksponen); // int(243)
Operator Penugasan
Operator penugasan hanya ada satu, yaitu =
. Operator ini biasanya digunakan ketika kita ingin menugaskan nilai ke variabel (memasukkan nilai ke variabel), tapi sebetulnya kita juga bisa menugaskan berdasarkan referensi, tapi ini jarang dilakukan.
Contoh penugasan berdasarkan nilai:
$a = 5; // penugasan berdasarkan nilai
$b = $a;
$a = 6;
var_dump($a); // int(6)
var_dump($b); // int(5)
Ketika kita mengubah nilai $a
dengan 6
, nilai $b
tidak berubah (tetap menggunakan nilai $a
yang pertama, yaitu 5
). Seperti itulah perilaku variabel yang ditugaskan berdasarkan referensi.
Sekarang mari kita lihat perilaku penugasan berdasarkan referensi.
$a = 5;
$b = &$a; // penugasan berdasarkan referensi (ada tanda "&")
$a = 6;
var_dump($a); // int(6)
var_dump($b); // int(6)
Ketika kita mengubah nilai $a
dengan 6
, nilai $b
ikut berubah menjadi 6
, begitu pula jika kita mengubah variabel $b
, variabel $a
juga akan ikut berubah.
Operator penugasan dapat digabungkan dengan operator lain, mari kita pelajari satu per satu.
Operator Penugasan Aritmatika
Operator penugasan aritmatika adalah penggabungan operator penugasan dengan operator aritmatika.
Berikut daftar operator penugasan aritmatika:
Sintaks | Setara | Operasi |
---|---|---|
$a += $b | $a = $a + $b | Penjumlahan |
$a -= $b | $a = $a - $b | Pengurangan |
$a *= $b | $a = $a * $b | Perkalian |
$a /= $b | $a = $a / $b | Pembagian |
$a %= $b | $a = $a % $b | Modulus |
$a **= $b | $a = $a ** $b | Eksponen (pangkat) |
Operator Penugasan Bitwise
Sama seperti aritmatika, operator penugasan bitwise adalah penggabungan operator penugasan dengan operator bitwise.
Berikut daftar operator penugasan bitwise:
Sintaks | Setara | Operasi |
---|---|---|
$a &= $b | $a = $a & $b | Bitwise And |
$a |= $b | $a = $a | $b | Bitwise Or |
$a ^= $b | $a = $a ^ $b | Bitwise Xor |
$a <<= $b | $a = $a << $b | Left Shift |
$a >>= $b | $a = $a >> $b | Right Shift |
Operator Penugasan Lainnya
Selain operator aritmatika dan bitwise, operator penugasan juga dapat digabungkan dengan dua operator lainnya, yaitu operator penggabungan string, dan null coalesce.
Berikut daftar operator penugasan lainnya:
Sintaks | Setara | Operasi |
---|---|---|
$a .= $b | $a = $a . $b | Penggabungan String |
$a ??= $b | $a = $a ?? $b | Null Coalesce |
Operator Perbandingan
Sesuai dengan namanya, operator perbandingan adalah operator yang memungkinkan kita membandingkan dua nilai. Operator ini membutuhkan dua nilai (operator biner) dan menghasilkan nilai tunggal boolean, true
atau false
.
Berikut daftar operator perbandingan:
Sintaks | Nama | Hasil |
---|---|---|
$a == $b | Nilai setara | true jika nilai $a sama dengan $b setelah type juggling |
$a === $b | Nilai dan tipe setara | true jika nilai dan tipe $a dan b sama |
$a != $b atau $a <> $b | Nilai tidak sama | true jika nilai $a tidak sama dengan $b setelah type juggling |
$a !== $b | Nilai dan tipe tidak sama | true jika nilai dan tipe $a tidak sama dengan $b |
$a < $b | Kurang dari | true jika $a kurang dari $b |
$a <= $b | Kurang dari atau sama dengan | true jika $a kurang dari atau sama dengan $b |
$a > $b | Lebih dari | true jika $a lebih dari $b |
$a >= $b | Lebih dari atau sama dengan | true jika $a lebih dari atau sama dengan $b |
Contoh:
var_dump(2 == '2'); // bool(true)
var_dump(2 === 2); // bool(true)
var_dump(2 != '3'); // bool(true)
var_dump(2 !== 3); // bool(true)
var_dump(2 < 3); // bool(true)
var_dump(2 <= 2); // bool(true)
var_dump(3 > 2); // bool(true)
var_dump(2 >= 2); // bool(true)
Operator Logika
Operator logika secara umum merupakan operator biner (membutuhkan dua nilai), tapi ada juga operator unary yang membutuhkan satu nilai.
Operator logika biasanya digunakan untuk membandingkan dua nilai atau ekspresi yang menghasilkan nilai boolean, true
atau false
.
Jika nilai atau operan sebelum dan setelah operator bukan nilai boolean, maka akan dikonversi ke boolean.
Berikut daftar operator logika:
Sintaks | Nama | Hasil |
---|---|---|
$a and $b atau $a && $b | Dan | true jika $a dan $b bernilai true |
$a or $b atau $a || $b | Atau | true jika $a atau $b bernilai true |
$a xor $b | Xor | true jika $a atau $b bernilai true , tetapi tidak keduanya |
!$a | Negasi (kebalikan) | true jika $a dalah false , false jika $a adalah true |
Dua operator paling atas memiliki alias, mereka ada karena memiliki urutan prioritas yang berbeda, lihat tabel prioritas operator di atas.
Contoh:
var_dump(true && true); // bool(true)
var_dump(false && true); // bool(false)
var_dump(true || false); // bool(true)
var_dump(false || false); // bool(false)
var_dump(true xor true); // bool(false)
var_dump(false xor true); // bool(true)
var_dump(!true); // bool(false)
var_dump(!false); // bool(true)
Operator String
Operator string hanya ada dua, yaitu titik (.
) dan operator gabungan dengan penugasan yaitu titik sama dengan (.=
), keduanya berfungsi untuk menggabugnkan string.
Contoh:
$sayHi = 'Hi';
$sayHiBudi = $sayHi . ' Budi';
var_dump($sayHiBudi); // string(7) "Hi Budi"
$sayHi2 = "Hi";
$sayHi2 .= " Budi";
var_dump($sayHi2); // string(7) "Hi Budi"
Operator Increment dan Decrement
Operator increment dan decrement adalah operator unary, operator ini bekerja pada nilai atau operan bertipe integer atau floating point.
Fungsi dari operator increment adalah untuk menambahkan nilai dengan 1, sedangkan decrement mengurangi nilai dengan 1.
PHP mendukung pre dan post increment dan decrement, pre dan post menentukan kapan nilai dikalkulasikan. Misalnya, jika kita menggunakan pre-increment hasilnya akan langsung dikembalikan saat dideklarasikan.
Sedangkan post-increment tidak, post-increment akan mengembalikan nilai awalnya terlebih dahulu (nilai sebelum ditambah), setelah deklarasi, nilai kemudian akan dijumlahkan, setelah itu nilainya baru berubah. Agar lebih jelas lihat contoh dibawah.
Berikut daftar operator increment dan decrement.
Sintaks | Nama | Deskripsi |
---|---|---|
++$a | Pre-increment | Tambah $a dengan 1, lalu kembalikan hasilnya |
$a++ | Post-increment | Kembalikan nilai $a , lalu tambahkan $a dengan 1 |
--$a | Pre-decrement | Kurangi $a dengan 1, lalu kembalikan hasilnya |
$a-- | Post-decrement | Kembalikan nilai $a , lalu kurangi $a dengan 1 |
Contoh:
// INCREMENT
// pre
$b = 3;
var_dump(++$b); // int(4)
var_dump($b); // int(4)
// post
$a = 3;
var_dump($a++); // int(3)
var_dump($a); // int(4)
// DECREMENT
// pre
$c = 3;
var_dump(--$c); // int(2)
var_dump($c); // int(2)
// post
$d = 3;
var_dump($d--); // int(3)
var_dump($d); // int(2)
Operator Bitwise
Operator biwise merupakan operator yang bekerja pada nilai biner meskipun operan menggunakan bilangan bulat atau integer.
Berikut daftar operator bitwise yang dapat digunakan:
Sintaks | Nama |
---|---|
$a & $b | AND |
$a || $b | Or |
$a ^ $b | Xor |
~ $a | Not |
$a << $b | Shift left |
$a >> $b | Shift right |
Operator Tipe
Operator tipe hanya ada satu, yaitu instanceof
. Operator ini digunakan untuk memeriksa apakah sebuah variabel adalah instance object dari kelas tertentu atau bukan.
Contoh:
class Person {}
$person = new Person();
var_dump($person instanceof Person); // bool(true)
Operator Array
Operator array merupakan operator yang bisa kita gunakan untuk melakukan operasi dengan tipe data array.
Berikut daftar operator array:
Sintaks | Nama | Hasil |
---|---|---|
$a + $b | Gabungkan | Gabungkan elemen $b yang tidak ada di $a |
$a == $b | Kunci dan Nilai sama | true , jika $a dan $b memiliki kunci dan nilai yang sama |
$a === $b | Kunci dan Nilai bertipe sama | true , jika $a dan $b memiliki kunci dan nilai yang sama dalam urutan dan tipe yang sama |
$a != $b atau $a <> $b | Kunci dan nilai tidak sama | true , jika a dan b tidak memiliki kunci dan nilai yang sama |
$a !== $b | Kunci dan nilai bertipe tidak sama | true , jika $a dan $b tidak memiliki kunci dan nilai yang sama dan bertipe sama |
Contoh:
var_dump([ 'nama' => 'reza' ] + [ 'umur' => 20 ]);
// array(2) {
// ["nama"]=>
// string(4) "reza"
// ["umur"]=>
// int(20)
// }
var_dump([1] == ['1']); // bool(true)
var_dump([1] === [1]); // bool(true)
var_dump([1] != ['1']); // bool(false)
var_dump([1] !== ['1']); // bool(true)
Operator Eksekusi
Operator eksekusi adalah operator untuk mengeksekusi perintah shell, operator shell diawali dengan tanda backtick (`) dan diakhiri dengan tanda yang sama, diantara tanda backtick kita bisa menulis perintah shell yang nantinya akan dieksekusi oleh PHP.
Operator ini adalah alternatif fungsi shell_exec()
keduanya memiliki perilaku yang sama.
Sintaks
`perintah shell`
Nilai Kembalian
Mengembalikan string jika perintah mengembalikan output, false
jika pipe tidak dapat dibuat, atau null
jika perintah tidak menghasilkan output atau error.
Contoh jika menggunakan shell linux:
$output = `ls -la`;
var_dump($output);
// string(147) "total 12
// drwxr-xr-x 2 reza reza 4096 Sep 30 09:27 .
// drwxr-xr-x 8 reza reza 4096 Sep 19 21:34 ..
// -rw-r--r-- 1 reza reza 355 Oct 4 14:26 index.php
// "
Perintah ls -la
digunakan untuk melihat daftar file atau direktori linux, jika Anda menggunakan Windows gunakan perintah dir
.
Contoh jika menggunakan Windows:
$output = `dir`;
var_dump($output);
// string(336) " Volume in drive C has no label.
// Volume Serial Number is xxx-xxxx
// Directory of C:\Users\Reza\CODE\belajar-php
// 21/09/2022 09:29 <DIR> .
// 20/09/2022 11:55 <DIR> ..
// 04/10/2022 13:18 43 index.php
// 1 File(s) 43 bytes
// 2 Dir(s) 183.321.088.000 bytes free
// "