Tutorial Belajar PHP Part 28: Cara Mengubah Tipe Data PHP (Type Juggling dan Type Casting)

Dalam tutorial kali ini kita akan membahas tentang cara merubah tipe data PHP dari sebuah tipe data menjadi tipe data lainnya. Dalam permograman PHP, hal ini dikenal dengan istilah type juggling dan type casting.


Pengertian Type Juggling dalam PHP

PHP merupakan bahasa pemograman yang tidak terlalu ketat dalam aturan tipe data (dimana sebuah variabel dapat diisi dengan berbagai tipe data). Hal ini memberikan kemudahan penulisan, namun juga mendatangkan permasalahan tersendiri. Terkadang PHP mengubah tipe data suatu variabel menjadi tipe data lainnya secara tidak langsung tanpa kita instruksikan.

Jika anda telah mengikuti tutorial PHP di duniailkom tentang pembahasan tipe data dan operator, maka beberapa kali kita telah membuat kode program yang "memaksa" suatu tipe data berfungsi sebagai tipe data lainnya.

Perhatikan kode program php berikut:

<?php
   $a=12;
   $b="9 kucing";
   echo $a+$b; // 21
?>

Dalam kode diatas, saya mendefenisikan variabel $a sebagai integer (angka) dan variabel $b sebagai string. Operasi penambahan seharusnya membutuhkan 2 inputan berupa angka, namun seperti yang terlihat ketika program dijalankan, PHP dengan senang hati akan menjalankan perintah tersebut tanpa mengeluarkan error. 12+"9 kucing" akan menghasilkan nilai 21.

Proses perubahan tipe data ini dikenal dengan istilah type juggling. Type Juggling dalam PHP adalah sebuah proses untuk menentukan jenis tipe data yang "cocok" dengan operasi saat itu, dan PHP akan menkonversinya secara langsung.

PHP akan mencoba "menebak" dan mengubah tipe data agar disesuaikan dengan peruntukannya. Misalkan operator aritmatika seharusnya membutuhkan 2 buah inputan (atau operand) yang bertipe angka (baik berupa integer maupun float). Namun apabila salah satu atau kedua operand itu bukan bertipe angka, maka PHP akan mengkonversinya menjadi angka.

Seperti contoh program diatas, string "9 kucing" akan dikonversi menjadi angka. Dan menghasilkan angka 21 (aturan pengkonversian ini akan kita bahas sesaat lagi).

Sebagai contoh lainnya, perhatikan kode PHP berikut ini:

<?php
   $a=12;
   $b="9 kucing";
   echo $a AND $b;
?>

Nilai dari variabel $a dan $b masih sama dengan contoh saya yang pertama, namun kali ini saya membuat operator logika AND sebagai operasi yang akan diproses. Dan jika anda menjalankan program diatas, di browser akan tampil angka 1. Dari manakah angka 1 ini berasal?

Operator AND membutuhkan 2 inputan bertipe boolean, yakni nilai TRUE atau FALSE. Namun karena saya menggunakan tipe integer "12" dan type string "9 kucing", maka kedua operand ini akan dikonversi menjadi TRUE. Karena TRUE AND TRUE adalah TRUE, maka hasil $a AND $b pada contoh program diatas adalah TRUE.

Namun proses type juggling PHP belum selesai, karena perintah echo membutuhkan inputan berupa string, bukan nilai boolean TRUE. Dan PHP akan mengkonversi boolean TRUE menjadi string "1".

Pemahaman tentang type juggling dalam PHP ini akan membantu kita untuk menghindari error kode program karena perubahan tipe data yang tidak terdeteksi.


Pengertian Type Casting dalam PHP

Jika type juggling merupakan proses "otomatis" oleh PHP, maka Type Casting adalah proses perubahan type data secara manual dengan menggunaan instruksi di dalam kode program.

Untuk merubah sebuah type data, kita menggunakan perintah casting dengan cara membuat nama tipe data tujuan di dalam tanda kurung sebelum variabel yang akan diubah.

Perhatikan contoh kode program berikut:

<?php
   $a=12;
   $b="9 kucing";
   echo $b;           //9 kucing
   echo "<br />";
   echo (integer) $b; //9
   echo "<br />";
   echo (boolean) $b; //1
?>

Pada baris ke -6, saya membuat echo (integer) $b, perintah ini adalah men-casting tipe data yang ada didalam variabel $b (apapun tipe datanya) menjadi integer. Dan pada baris ke 8. saya meng-casting tipe data $b menjadi boolean.

Jenis-jenis perintah casting yang ada dalam PHP adalah sebagai berikut:

  • (int), (integer) – mengubah tipe data menjadi integer
  • (bool), (boolean) – mengubah tipe data menjadi boolean
  • (float), (double), (real) – mengubah tipe data menjadi float
  • (string) – mengubah tipe data menjadi string
  • (array) – mengubah tipe data menjadi array
  • (object) – mengubah tipe data menjadi object
  • (unset) – mengubah tipe data menjadi NULL (PHP 5)

Aturan konversi data dalam PHP

Perubahan sebuah tipe data menjadi tipe data lainnya dalam PHP memiliki aturan tersendiri. Berikut adalah aturan konversi tipe data dalam PHP

Konversi menjadi Integer

  • Jika tipe data asal adalah float, maka perubahan menjadi integer akan membuang tanda desimal dari float. Contohnya, 3.94  akan menjadi integer 3.
  • Jika tipe data asal adalah boolean, maka nilai TRUE akan menjadi 1, dan FALSE manjadi 0.
  • Jika tipe data asal adalah string, maka string akan dipotong pada angka terakhir yang ditemukan, mulai dari awal string. Namun jika diawal string tidak terdapat angka, maka string akan dikonversi menjadi 0. Contohnya, "9 Kucing" akan menjadi integer 9, "999 kucing" akan menjadi integer 999. "kucing 99" akan menjadi 0, "14,5 kali gaji" akan menjadi integer 14 (karena desimal akan dibuang dari string)
  • Jika tipe data asal adalah array kosong (tanpa data) maka jika dikonversi menjadi integer akan menghasilkan 0, namun array dengan isi data minimal 1, akan dikonversi menjadi 1.

Konversi menjadi float

  • Secara garis besar, konversi menjadi float hampir sama dengan konversi menjadi integer, dengan perbedaan jika tipe asal adalah string, maka angka desimal akan diperhitungkan, misalnya "14,5 kali gaji" akan dikonversi menjadi float 14,5

Konversi menjadi boolean

  • Jika tipe data asal adalah integer, maka angka 0 akan dikonversi menjadi FALSE, selain itu, akan dikonversi menjadi TRUE. Contohnya 0 -> FALSE, 1 -> TRUE, -1 -> TRUE.
  • Jika tipe data asal adalah float, maka angka 0.0 akan dikonversi menjadi FALSE, selain itu, akan dikonversi menjadi TRUE. Contohnya 0.0 -> FALSE, 1,9 -> TRUE, -1,6 -> TRUE.
  • Jika tipe data asal adalah string, maka string "" (tanpa karakter) akan dikonversi menjadi FALSE, string "0" (string dengan karakter nol) akan dikonversi menjadi FALSE, selain itu akan dikonversi menjadi TRUE. Contohnya: "" -> FALSE, " " ->TRUE (karakter spasi), "0" -> FALSE.
  • Jika tipe data asal adalah array, maka array kosong (tanpa data) akan dianggap FALSE, selain itu array akan dikonversi menjadi TRUE.

Sebagai penutup, berikut adalah contoh-contoh konversi tipe data didalam PHP:

<!DOCTYPE html>
<html>
<head>
   <title>Belajar Cara Konversi Tipe Data PHP</title>
</head>
<body>
<?php

// Konversi menjadi Integer
  var_dump((int) 3.45); // 3
  echo "<br />";
  var_dump((int) "3.45");  // 3 (string 3.45)
  echo "<br />";
  var_dump((int) "9 Naga");  //9
  echo "<br />";
  var_dump((int) "Naga Bonar"); // 0
  echo "<br />";
  var_dump((int) "Wiro Sableng 212"); //0
  echo "<br />";
  var_dump((int) FALSE); // 0
  echo "<br />";
  var_dump((int) "1FALSE"); //1
  echo "<br />";
  var_dump((int) array()); // 0
  echo "<br />";
  var_dump((int) array("data")); //1
  echo "<br />"; 

// Konversi menjadi Float
  var_dump((float) 3); // 3
  echo "<br />";
  var_dump((float) "3.45");  // 3.45
  echo "<br />";
  var_dump((float) "9 Naga");  //9
  echo "<br />";
  var_dump((float) "Naga Bonar"); // 0
  echo "<br />";
  var_dump((float) "Wiro Sableng 212"); //0
  echo "<br />";
  var_dump((float) FALSE); // 0
  echo "<br />";
  var_dump((float) "1FALSE"); //1
  echo "<br />";
  var_dump((float) array()); // 0
  echo "<br />";
  var_dump((float) array("data")); //1
  echo "<br />";

// Konversi menjadi Boolean
  var_dump((bool) 3); // TRUE
  echo "<br />";
  var_dump((bool) 0);  // FALSE
  echo "<br />";
  var_dump((bool) -1);  // TRUE
  echo "<br />";
  var_dump((bool) ""); // FALSE
  echo "<br />";
  var_dump((bool) " "); //TRUE
  echo "<br />";
  var_dump((bool) "0"); // FALSE
  echo "<br />";
  var_dump((bool) "FALSE"); // TRUE (!) - karena string
  echo "<br />";
  var_dump((bool) array()); // FALSE
  echo "<br />";
  var_dump((bool) array("data")); // TRUE
  echo "<br />";
?>
</body>
</html>

Dalam program diatas, saya membuat beberapa contoh konversi di dalam PHP.


Aturan tentang konversi tipe data dalam PHP ini (Type Juggling dan Type Casting) menutup tutorial PHP sesi operator. Untuk selanjutnya, kita akan mempelajari tentang alur logika program dalam PHP, atau dikenal dengan Struktur kontrol dalam PHP.

20 Comments

  1. kenta
    31 Dec 15
    • kenta
      31 Dec 15
    • Andre
      01 Jan 16
      • Indra Bustami
        17 Feb 17
        • Andre
          18 Feb 17
  2. Habibie
    26 Jun 16
    • Andre
      27 Jun 16
  3. androidmaker
    03 Jul 16
    • Andre
      04 Jul 16
  4. Adam Fahmil
    27 Jul 16
    • Andre
      28 Jul 16
  5. Anonymous
    15 Mar 17
    • Andre
      16 Mar 17
  6. Satrio Wibowo
    20 Jul 17
  7. aziz malik
    08 Dec 17
    • Andre
      14 Dec 17
    • Andre
      18 Dec 17
  8. Info Bis
    22 Apr 20

Add Comment

Leave a Reply to kenta Cancel reply