Pendahuluan
Kita ingat dari pelajaran yang telah lalu tentang tipe data dan variabel bahwa PHP tidak butuh (bahkan tidak support) pendefinisian tipe data pada suatu variabel. Kita tidak perlu menspesifikasikan tipe data apa pun terhadap variabel yang kita buat.
Semua tipe data pada suatu variabel ditentukan berdasarkan konteks data yang dimasukkan ke dalamnya. Misalkan kita memasukkan nilai string ke variabel $nama
maka variabel $nama
akan bertipe-data string, begitu juga jika kita memberikan nilai integer ke variabel $nama
, maka variabel $nama
akan dianggap bertipe-data integer.
Akan tetapi, tipe data dari suatu variabel di dalam PHP, bisa dikonversi menjadi tipe data yang lain baik secara implisit (otomatis) mau pun secara eksplisit (manual). Atau juga sering diistilahkan sebagai tipe data casting (manual) dan tipe data juggling (otomatis).
Konversi Tipe Data Secara Implisit
Konversi tipe data secara implisit sering juga disebut dengan istilah tipe data juggling. Yaitu konversi tipe data yang selesai secara otomatis oleh interpreter PHP tanpa ada campur tangan pemrogram.
Perhatikan contoh berikut:
<?php
$a = "1"; /* $a adalah string */
$a++; /* sekarang $a adalah integer (2) */
$a .= "3"; /* sekarang $a kembali menjadi string ("23") */
$a *= 0.5; /* sekarang $a berubah menjadi float (11.5) */
$b = 5 + "10 rumah"; /* $b menjadi integer (15) */
$c = 5 * "10kg beras dan 3 gram emas"; /* $c menjadi integer */
$d = 1 and "3"; /* $d bertipe data integer (1) */
$e = true and "5"; /* $e bertipe data boolean (true) */
$z = "a" and "b"; /* $z bertipe data string ("a") */
$f = "10" . "20.5"; /* $f bertipe data string (1020.25) */
$g = "10" + "20.5"; /* $g bertipe data float (30.25) */
$h = 10 + "20.5"; /* $h bertipe data float (30.5) */
$i = "10 beras" + 20.5; /* $i bertipe data float (30.5) */
$j = "beras 10" + 20.5; /* $j bertipe data float (20.5) */
Penjelasan
- PHP akan berusaha menentukan tipe data yang cocok untuk semua variabel sesuai dengan operator dan operan
- Jika variabel string dioperasikan dengan operator matematika (misal +, -, *, /), PHP akan berusaha mengonversinya menjadi tipe data numerik (entah integer atau float)
- Jika string diubah menjadi integer, PHP akan mengambil karakter pertama dari string tersebut. Jika karakter pertama adalah data numerik, PHP akan melanjutkan proses konversi ke karakter setelahnya selama tidak ada karakter non-numerik yang memisahkan.
"10"
menjadi10
"10 kambing"
menjadi10
"123 kambing dan 10 sapi"
menjadi123
"kambing 10 dan sapi 3"
menjadi0
- Operator logika (and, or) atau operator perbandingan akan mengubah data menjadi integer atau pun boolean atau apa pun tergantung dari tipe data operan yang pertama.
1 and "3"
menjadiinteger (1)
true and "5"
menadiboolean (true)
"a" and "b"
menjadistring ("a")
Konversi Tipe Data Secara Eksplisit
Membiarkan kode program kita terkonversi secara otomatis –jika tidak hati-hati– bisa menyebabkan bug aneh yang kita tidak sangka-sangka sebelumnya.
Oleh karena itu, untuk kehati-hatian, kita bisa mengkonversi tiap nilai ke tipe data yang sesuai agar kode program bisa bekerja sesuai dengan yang kita inginkan.
Hal ini disebut dengan tipe data casting atau konversi tipe data secara eksplisit.
Bagaimana caranya? Perhatikan contoh berikut:
<?php
$a = "10 rumah"; /* $a bertipe data string ("10 rumah") */
$a = (int) $a; /* $a sekarang adalah integer (10) */
$a = (bool) $a; /* $a sekarang adalah boolean (true) */
$b = 100; /* $b bertipe data integer (100) */
$b = (string) $b; /* $b sekarang adalah string ("100") */
$c = (array) $b; /* $c adalah array ["100"] */
Tipe data casting yang bisa kita lakukan di dalam PHP adalah sebagai berikut:
Kode | Keterangan |
---|---|
(int) , (integer) |
Konversi ke integer |
(float) , (double) , (real) |
Konversi ke float |
(bool) , (boolean) |
Konversi ke boolean |
(string) |
Konversi ke string |
(array) |
Konversi ke array |
(object) |
Konversi ke object |
(unset) |
Konversi ke NULL |
Untuk contoh konversi array ke object, insyaallah akan kita bahas dalam pertemuan selanjutnya.
Kesimpulan
Dalam PHP, semua tipe data pada suatu variabel ditentukan berdasarkan konteks data yang dimasukkan ke dalamnya. Jika kita memasukkan nilai string ke variabel $nama
maka variabel $nama
akan bertipe-data string, jika kita memberikan nilai integer ke variabel $nama
, maka variabel $nama
akan dianggap bertipe-data integer.
Terkadang PHP akan mengkonversi tipe data satu ke tipe data yang lain jika dibutuhkan. Seperti misalkan dua tipe data yang berbeda dikenakan suatu operator matematika. Maka salah satu tipe datanya atau bahkan keduanya akan dikonversi menjadi tipe data yang sesuai. Hal ini disebut sebagai tipe data juggling.
Cara yang lain untuk mengkonversi tipe data adalah: dengan mendefinisikan secara eksplisit tipe data yang ingin kita konversi. Hal ini disebut sebagai tipe data casting.
Menggunakan tipe data casting sangat disarankan ketika kita membuat menulis kode program, hal itu agar kita bisa memastikan semua perintah yang kita tulis, akan dieksekusi sesuai dengan yang kita harapkan. Selain itu, menggunakan tipe data casting akan mencegah timbulnya bug-bug aneh yang tidak terprediksi.
Pembahasan Selanjutnya
Kita telah membahas dua jenis konversi tipe data dalam PHP: yaitu konversi secara otomatis atau tipe data juggling, dan konversi tipe data secara manual atau biasa disebut tipe data casting.
Untuk tipe data casting sendiri, kita telah mencoba berbagai macam contoh. Akan tetapi kita masih belum mencoba satu hal: yaitu konversi tipe data array ke object dan sebaliknya.
Pembahasan ini insyaallah akan kita ambil pada pertemuan selanjutnya.
Terima kasih banyak!