Dalam tutorial kali ini kita akan mempelajari jenis dan cara penggunaan operator perbandingan (Comparison Operators) dalam PHP.
Pengertian Operator Perbandingan dalam PHP
Sesuai dengan namanya, operator perbandingan membandingkan nilai dari 2 operand. Hasilnya selalu salah satu dari TRUE atau FALSE. Hasil perbandingan akan bernilai TRUE jika kondisi perbandingan tersebut benar, atau FALSE jika kondisinya salah.
Operand untuk operator perbandingan ini bisa berupa tipe data angka (integer atau float), maupun bertipe string. Operator perbandingan akan memeriksa nilai dan (untuk beberapa operator) juga tipe data dari operand.
Jenis-jenis Operator Perbandingan dalam PHP
Jenis-jenis dari operator perbandingan dalam PHP dapat dilihat dari tabel dibawah ini:
Dikarenakan operasi perbandingan dapat memiliki operan berupa angka dan string, PHP memiliki aturan sebagai berikut:
Dari tabel diatas dapat dilihat bahwa selain membandingkan angka dengan angka, PHP juga membolehkan perbandingan angka dengan string, array, bahkan objek. Namun dalam prakteknya kita akan sering membandingkan angka.
Cara Penggunaan Operator Perbandingan di dalam PHP
Berikut adalah beberapa contoh penggunaan operator perbandingan dalam PHP:
<?php echo "1. 12 < 14 = "; var_dump(12<14); // bool(true) echo "<br />"; echo "2. 14 < 14 = "; var_dump(14<14); // bool(false) echo "<br />"; echo "3. 14 <= 14 = "; var_dump(14<=14); // bool(true) echo "<br />"; echo "4. 10 <> '10' = "; var_dump(10<>'10'); // bool(false) echo "<br />"; echo "5. 10 == '10' = "; var_dump(10=='10'); // bool(true) echo "<br />"; echo "6. 10 === '10' = "; var_dump(10==='10'); // bool(false) echo "<br />"; echo "7. '150' == '1.5e2' = "; var_dump('150'=='1.5e2'); // bool(true) echo "<br />"; echo "8. 'duniailkom' == 0 = "; var_dump('duniailkom'==0); // bool(true) echo "<br />"; ?>
Dalam contoh kode PHP diatas, saya menggunakan fungsi var_dump() untuk melihat hasil dari perbandingan. Contoh 1 sampai 3 merupakan operasi perbandingan aritmatika biasa.
Pada contoh ke 4, 10 <> '10' = FALSE, karena PHP menganggap kedua operand adalah sama, sehingga jika diberikan operator tidak sama dengan (<>), maka hasilnya FALSE. Perhatikan bahwa tipe data kedua angka berbeda, saya menambahkan tanda petik untuk membuah string '10', namun PHP mengkonversinya menjadi integer 10 ketika membandingkan (sesuai aturan tabel diatas).
Pada contoh ke 5, 10 == '10' = TRUE, karena alasan yang sama dengan penjelasan contoh ke 4. String '10' dikonversi terlebih dahulu menjadi angka, lalu dibandingkan, sehingga hasilnya menjadi TRUE.
Untuk contoh ke 6, 10 === '10' = FALSE, karena operator === selain membandingkan nilai, juga membandingkan tipe data dari opearand, sehingga string '10' dianggap tidak sama dengan integer 10. Hal ini berbeda dengan contoh ke 5.
Untuk contoh ke 7, '150' == '1.5e2' = TRUE, karena seluruh string yang berupa angka dikonversi menjadi angka terlebih dahulu, dan  '1.5e2' adalah penulisan scientific dari 1,5 x 10^2, yang hasilnya adalah 150. Namun sama seperti contoh ke 6, jika kita mengganti operator '==' dengan '===', maka hasilnya akan FALSE.
Pada contoh terakhir, no 8. Saya membandingkan string dengan angka, sehingga string 'duniailkom' dikonversi menjadi integer bernilai 0, dan baru disamakan dengan operan kedua, yakni angka 0. Karena 0==0, maka hasilnya = TRUE.
Operator perbandingan ini sering digunakan untuk kondisi IF, misalkan jika $nama_user ada di dalam database, maka jalankan kode program. Lebih lanjut tentang penggunaan operator perbandingan, akan kita bahas pada tutorial lanjutan.
mas kenapa "dunialkom" dikonvers menjadi 0 mas ? apakah tipe dt string yang berupa huruf selalu di konveri menjadi 0 mas ? mohon penjelasannya , hehehe makasih mas sebelumnya
Terima kasih pertanyaanya…
Tidak semua string akan dikonversi menjadi 0, sebagai contoh, hasil operasi "9 ekor"+10 adalah 19 (string "9 ekor" dikonversi menjadi angka 9). Namun hasil operasi "ekor 9"+10 adalah 10 (dimana string "ekor 9" dikonversi menjadi 0). Mengenai aturan konversi ini akan dibahas pada tutorial Cara Mengubah Tipe Data PHP (Type Juggling dan Type Casting)
uda mulai pusing sampai perbandingan nie kakak……..
Hehe.. pelan-pelan saja gan.. :)
echo "7. '150' == '1.5e2' = "; var_dump('150'=='1.5e2'); // bool(true)
mau tanya mas , utk script diatas , kenapa ('150'=='1.5e2'); // bool(true) ?
Mohon penjelasannya , thanks
PHP mendukung penulisan angka float / desimal menggunakan notasi ilmiah (scientific notation). Karakter 1.5e2 sama artinya dengan 1.5 x 10^2 sama dengan 150. Penjelasan tentang scientific notation ada saya bahas di part tentang tipe data float: https://www.duniailkom.com/mengenal-tipe-data-float-dan-cara-penulisan-float-dalam-php/
Jika angka ke-1 sama dengan angka ke-2 maka fungsi mengembalikan nilai -1.. itu brrt echo gimana gan?
Pakai fungsi ya? bisa seperti ini:
<?php
function check($a, $b) {
if ($a == $b) { return -1; }
}
echo check(4,4); // -1
echo check(5,6); // (tidak terjadi apa2)
Tapi ada baiknya tugas seperti ini dibuat sendiri, karena masih dasar dan sangat penting dipahami bagaimana cara kerjanya. Silahkan lanjut baca2 materi berikutnya…
Min, duniailkom saya ubah kata lain knp jadi false? saya ganti kembali jd duniailkom tetap masih false. Mohon pencerahannya
Oh ya, untuk PHP versi terbaru (termasuk PHP 8), ada sedikit perubahan terkait perbandingan string dengan integer. Sekarang operasi 'duniailkom' == 0 memang akan false.
Kalau ada waktu nanti tutorial ini akan saya update.