Kodealgo

Type Casting PHP

Type Casting atau pengecoran tipe adalah proses mengkonversi tipe dari satu tipe ke tipe yang ditentukan, biasanya ini digunakan dalam kondisi spesifik.

Perbedaan antara type casting dan type juggling, type juggling mengkonversi tipe ke tipe yang sesuai berdasarkan konteks, sementara type casting memungkinkan kita mengkonversi tipe secara eksplisit ke tipe yang sesuai dengan keinginan.

Semua tipe data di PHP dapat dikonversi ke tipe lain, akan tetapi beberapa mungkin tidak sesuai dengan hasil yang kita harapkan, oleh karena itu mari kita pelajari satu per satu.

Berikut sintaks untuk melakukan type casting:

(tipe) nilai;

tipe adalah tipe yang kita harapkan, sedangkan nilai adalah nilai yang ingin dikonversi. Misalnya, (bool) 'hello' akan mengkonversi string 'hello' ke tipe boolean.

Berikut beberapa topik yang akan kita pelajari terkait type casting:

  1. Konversi ke Boolean
  2. Konversi ke Integer
  3. Konversi ke Floating Point
  4. Konversi ke String
  5. Konversi ke Array
  6. Konversi ke Object

Konversi ke Boolean

Tipe data apapun dapat dikonversi secara eksplisit menggunakan metode type casting ke boolean menggunakan (bool).

Dalam kebanyakan kasus mengkonversi secara eksplisit ke boolean tidak diperlukan, karena nilai akan secara otomatis dikonversi jika operator, fungsi, atau struktur kontrol memerlukan argumen atau nilai boolean.

Saat mengkonversi ke boolean, nilai-nilai berikut akan diubah menjadi false:

  • false
  • 0
  • 0.0 dan -0.0
  • String kosong ('') dan string nol ('0')
  • Array tanpa elemen ([])
  • null

Selain dari nilai-nilai di atas termasuk NAN dan resource, dikonversi menjadi true.

Sintaks

(bool) nilai;

Contoh:

$a = (bool) false;
$b = (bool) 0;
$c = (bool) 0.0;
$d = (bool) '0';
$e = (bool) '';
$f = (bool) [];
$g = (bool) null;

var_dump($a); // bool(false)
var_dump($b); // bool(false)
var_dump($c); // bool(false)
var_dump($d); // bool(false)
var_dump($e); // bool(false)
var_dump($f); // bool(false)
var_dump($g); // bool(false)

Konversi ke Integer

Untuk mengkonversi tipe lain ke integer, kita bisa menggunakan (int). Ini biasanya digunakan ketika kita ingin mengubah bilangan pecah (floating point) menjadi bilangan bulat (integer).

Sintaks

(int) nilai;

Contoh:

$a = (int) 4.2;
$b = (int) '2.2';
$c = (int) true;
$d = (int) false;
$e = (int) null;

var_dump($a); // int(4)
var_dump($b); // int(2)
var_dump($c); // int(1)
var_dump($d); // int(0)
var_dump($e); // int(0)

Lihat contoh di atas, selama string berisi angka yang valid untuk tipe integer atau floating point, maka akan dikonversi ke integer yang sesuai.

Sedangkan boolean true akan menjadi 1 dan false menjadi 0.

Selain dari itu, nilai-nilai falsy seperti null dan string kosong ([]) akan dikonversi ke boolean terlebih dahulu dalam hal ini false, kemudian dari boolean akan dikonversi ke integer, oleh karena itu hasilnya 1.

Konversi ke Floating Point

Type casting juga dapat dilakukan dari tipe lain ke floating point menggunakan (float).

Sintaks

(float) nilai;

Contoh:

$a = (float) 4.2;
$b = (float) '1.2';
$c = (float) 2;
$d = (float) null;
$e = (float) false;
$f = (float) true;

var_dump($a); // float(4.2)
var_dump($b); // float(1.2)
var_dump($c); // float(2)
var_dump($d); // float(0)
var_dump($e); // float(0)
var_dump($f); // float(1)

Jika string berisi angka yang valid entah itu integer atau floating point, maka dikonversi ke floating point. Jika tidak, maka akan mengembalikan float 0, meskipun kosong bilangan bulat, tipe yang dikembalikan adalah float.

Jika string tidak berisi angka yang valid, maka akan dikonversi ke float 0.

Untuk tipe lain, konversi dilakukan dibalik layar dengan cara mengkonversi nilai ke integer terlebih dahulu lalu ke float, seperti halnya contoh di atas null dan boolean.

Konversi ke String

Untuk mengkonversi tipe lain ke string, kita bisa menggunakan (string). Dalam kebanyakan kasus ini sebetulnya jarang dilakukan karena dalam konteks string mereka akan dikonversi secara otomatis.

Sintaks

(string) nilai;

Contoh:

$a = (string) 4.2;
$b = (string) '1.2';
$c = (string) 2;
$d = (string) null;
$e = (string) false;
$f = (string) true;
$g = (string) [];

var_dump($a); // string(4.2)
var_dump($b); // string(1.2)
var_dump($c); // string(2)
var_dump($d); // string(0)
var_dump($e); // string(0)
var_dump($f); // string(1)
var_dump($g); // string(5) "Array"

Nilai boolean true menjadi '1', sedangkan false menjadi '' (string kosong).

Untuk integer dan floating point, nilainya akan tetap sama, tapi tipe datanya akan menjadi string.

Khusus untuk array, ini akan menghasilkan string "Array". Di PHP versi baru ingin mungkin menghasilkan ke salahan "PHP Warning" karena metode ini tidak direkomendasikan dan memang jarang dilakukan.

Sedangkan untuk null selalu dikonversi ke string kosong.

Konversi ke Array

Untuk mengkonversi tipe lain ke tipe array, kita bisa menggunakan (array).

Konversi dari tipe integer, floating point, string, dan boolean ke array akan menghasilkan array numerik dengan elemen tunggal yang nilainya adalah nilai yang dikonversi.

Dengan kata lain, (array) 1 sama persis dengan [1] atau array(1). Khusus untuk null, menghasilkan array dengan elemen kosong.

Sitnaks

(array) nilai;

Contoh:


$a = (array) 4.2;
$b = (array) '1.2';
$c = (array) 2;
$d = (array) null;
$e = (array) false;
$f = (array) true;

var_dump($a);
// array(1) {
//   [0]=>
//   float(4.2)
// }

var_dump($b);
// array(1) {
//   [0]=>
//   string(3) "1.2"
// }

var_dump($c);
// array(1) {
//   [0]=>
//   int(2)
// }

var_dump($d);
// array(0) {
// }

var_dump($e);
// array(1) {
//   [0]=>
//   bool(false)
// }

var_dump($f);
// array(1) {
//   [0]=>
//   bool(true)
// }

Bagaimana jika objek dikonversi ke array? hasilnya adalah array yang berisi properti dari objek tersebut.

Contoh:

class Person {
  public $name;

  public function __construct(string $name) {
    $this->name = $name;
  }
}

const person = new Person("renova");

var_dump((array) person);
// array(1) {
//   ["name"]=>
//   string(6) "renova"
// }

Konversi ke Object

Konversi tipe lain ke object dapat dilakukan menggunkaan (object).

Nilai apa pun yang ingin dikonversi menjadi object maka instance baru dari kelas bawaan stdClass akan dibuat yang berisi nilai yang ingin dikonversi.

Jika nilainya adalah null, instance baru menjadi kosong. Sedangkan array, akan dikonversi menjadi object dengan properti yang sesuai dengan kunci dan nilainya.

Sintaks

(object) nilia;

Contoh:

$a = (object) ['nama' => 'budi'];

var_dump($a);
// object(stdClass)#1 (1) {
//   ["nama"]=>
//   string(4) "budi"
// }

var_dump($a instanceof stdClass); // bool(true)

Untuk tipe data scalar seperti string, integer, floating point, dan boolean, dijadikan sebagai nilai untuk properti scalar.

$a = (object) 'hello';

var_dump($a);
// object(stdClass)#1 (1) {
//   ["scalar"]=>
//   string(5) "hello"
// }

var_dump($a->scalar); // string(5) "hello"