Tipe Data dan Penerapan
Tipe data merupakan jenis atau karakteristik nilai yang ditampung dalam sebuah variabel. Setiap tipe data mendefinisikan tujuan yang berbeda sesuai dengan operasi yang akan dilakukan pada data tersebut. Tipe data pada PHP tidak didefinisikan secara eksplisit. Hal ini dikarenakan tipe data dari setiap variabel ditentukan dari nilai yang di-assign.
Berikut adalah beberapa fungsi penting yang dapat dimanfaatkan berkaitan dengan tipe data, yaitu:
gettype()
digunakan untuk mengetahui tipe data suatu variabel.isset()
digunakan untuk menentukan apakah sebuah variabel telah dideklarasi dan tidak sama dengan NULL.empty()
digunakan untuk menentukan apakah sebuah variabel kosong.
Fungsi
empty()
mengembalikan nilaifalse
apabila sebuah variabel dideklarasi dan memiliki nilai tidak kosong dan angka bukan nol'0'
.Berikut adalah beberapa nilai yang mengembalikan nilai
false
pada fungsiempty()
:
- “” (sebuah string kosong)
- 0 (sebuah integer bernilai 0)
- 0.0 (sebuah float bernilai 0)
- “0” (sebuah string bernilai 0)
NULL
false
- [] (sebuah array kosong)
Fungsi
empty($var)
memiliki ekuivalensi dengan!isset($var) || $var == false
.
Contoh:
<?php
$varNull = NULL;$varBoolean = true;$varInteger = 1;$varDouble = 3.2;$varString = "kata";$varArray = [1, 2, 3];$varObject = new stdClass;echo gettype($varNull); // Output: NULLecho gettype($varBoolean); // Output: booleanecho gettype($varInteger); // Output: integerecho gettype($varDouble); // Output: doubleecho gettype($varString); // Output: stringecho gettype($varArray); // Output: arrayecho gettype($varObject); // Output: object?>
Dalam PHP terdapat 7 tipe data, yaitu:
1. NULL
Tipe data NULL merepresentasikan sebuah variabel tanpa nilai. Apabila kita membentuk sebuah variabel baru tanpa memberikan nilai, tipe data variabel tersebut secara otomatis menjadi NULL. Begitu pula apabila kita hendak mengosongkan nilai dari isi variabel, kita dapat melakukan assignment NULL pada variabel tersebut. Hal ini akan menyebabkan variabel terhapus dari memori.
Tipe data NULL memiliki nilai kebenaran false
.
Untuk melakukan evaluasi tipe data NULL, kita dapat menggunakan fungsi is_null()
.
NULL berbeda dengan undefined. undefined berarti sebuah variabel yang tidak dideklarasi sehingga tidak memiliki nilai dan tipe data.
<?php
$nullVariable = NULL;echo gettype($undefinedVariable);// Notice: Undefined variable: undefinedVariable// Output: NULLecho gettype($nullVariable);// Output: NULLecho isset($undefinedVariable) ? "true" : "false";// Output: falseecho isset($nullVariable) ? "true" : "false";// Output: falseecho empty($undefinedVariable) ? "true" : "false";// Output: trueecho empty($nullVariable) ? "true" : "false";// Output: trueecho is_null($undefinedVariable) ? "true" : "false";// Notice: Undefined variable: undefinedVariable// Output: trueecho is_null($nullVariable) ? "true" : "false";// Output: true?>
Kita dapat memperhatikan bahwa sebuah variabel yang tidak dideklarasikan akan menampilkan peringatan Notice: Undefined variable ...
dan menetapkan variabel tersebut bertipe data NULL sebagai default value.
2. Boolean
Tipe data boolean merupakan tipe data yang hanya dapat bernilai true dan false. Tipe data ini umumnya dimanfaatkan dalam struktur kontrol. Penulisan true dan false tidak perlu menggunakan tanda petik, karena akan menetapkannya sebagai string.
Tipe data boolean yang tidak dideklarasi memiliki default value false
.
Untuk melakukan evaluasi tipe data boolean, kita dapat menggunakan fungsi is_bool()
.
<?php
$varTrue = true;$varFalse = false;echo gettype($varTrue);// Output: booleanecho gettype($varFalse);// Output: booleanecho isset($varTrue) ? "true" : "false";// Output: trueecho isset($varFalse) ? "true" : "false";// Output: trueecho empty($varTrue) ? "true" : "false";// Output: falseecho empty($varFalse) ? "true" : "false";// Output: trueecho is_bool($varTrue) ? "true" : "false";// Output: trueecho is_bool($varFalse) ? "true" : "false";// Output: true?>
3. Integer
Tipe data integer merupakan tipe data yang nilainya mencakup angka (number). integer dapat diterapkan dengan notasi decimal (…, -2, -1, 0, 1, 2, …), hexadecimal (awalan 0x
), atau octal (awalan 0
). Penulisan untuk nilai integer juga tidak memerlukan tanda petik.
- Tipe data integer memiliki nilai kebenaran
true
untuk angka bukan nol'0'
. - Tipe data integer memiliki nilai kebenaran
false
untuk angka nol'0'
.
Tipe data integer yang tidak dideklarasi memiliki default value 0
.
Untuk melakukan evaluasi tipe data integer, kita dapat menggunakan fungsi is_int()
.
<?php
$decimalPos = 77; // angka decimal positif$zeroValue = 0; // angka 0$decimalNeg = -77; // angka decimal negatif$hexadecimalPos = 0xB; // angka hexadecimal positif$hexadecimalNeg = -0x1D; // angka hexadecimal negatif$octalPos = 012; // angka octal positif$octalNeg = -022; // angka octal negatifecho gettype($decimalPos);// Output: integerecho gettype($decimalNeg);// Output: integerecho isset($hexadecimalPos) ? "true" : "false";// Output: trueecho isset($hexadecimalNeg) ? "true" : "false";// Output: trueecho empty($decimalPos) ? "true" : "false";// Output: falseecho empty($zeroValue) ? "true" : "false";// Output: trueecho empty($decimalNeg) ? "true" : "false";// Output: falseecho is_int($octalPos) ? "true" : "false";// Output: trueecho is_int($octalNeg) ? "true" : "false";// Output: true?>
4. Float
Tipe data float merupakan tipe data yang nilainya mencakup bilangan pecahan (angka desimal). Sama seperti integer, penulisan float tidak memerlukan tanda petik.
Jika kita menjalankan fungsi gettype()
pada variabel bertipe data float, variabel akan didefinisikan sebagai double. Hal ini dikarenakan pada dasarnya float dan double merupakan tipe data yang sama, hanya berbeda pada ukurannya.
- Tipe data float memiliki nilai kebenaran
true
untuk angka bukan nol'0'
. - Tipe data float memiliki nilai kebenaran
false
untuk angka nol'0'
. NAN
(Not-A-Number) memiliki nilai kebenarantrue
. Hal ini dikarenakanNAN
termasuk angka bukan nol'0'
.
Tipe data float yang tidak dideklarasi memiliki default value 0
.
Untuk melakukan evaluasi tipe data float, kita dapat menggunakan fungsi is_float()
atau is_double()
.
<?php
$floatPos = 7.5237;$zeroValue = 0.00;$floatNeg = -0.13967;$floatExpo = 2.1e5; // 2.1 x 10^(5)$floatEnot = 5E-3; // 5 x 10^(-3)echo gettype($floatPos);// Output: doubleecho gettype($floatNeg);// Output: doubleecho isset($floatExpo) ? "true" : "false";// Output: trueecho isset($floatEnot) ? "true" : "false";// Output: trueecho empty($floatPos) ? "true" : "false";// Output: falseecho empty($zeroValue) ? "true" : "false";// Output: trueecho empty($floatNeg) ? "true" : "false";// Output: falseecho is_float($floatPos) ? "true" : "false";// Output: trueecho is_double($floatNeg) ? "true" : "false";// Output: true?>
5. String
Tipe data string merupakan tipe data yang terdiri dari kumpulan karakter (array of characters). Penulisan string menggunakan tanda petik.
- Tipe data string memiliki nilai kebenaran
true
untuk teks dengan panjang tertentu (> 0), selain string angka nol'0'
. - Tipe data string memiliki nilai kebenaran
false
untuk teks kosong dan string angka nol'0'
Tipe data string yang tidak dideklarasi memiliki default value ''
.
Untuk melakukan evaluasi tipe data string, kita dapat menggunakan fungsi is_string()
.
<?php
$statement1 = 'Ini string.';$statement2 = "Ini juga string.";$statementEmpty = "";$statementZero = "0";echo gettype($statement1);// Output: stringecho gettype($statement2);// Output: stringecho isset($statement1) ? "true" : "false";// Output: trueecho isset($statementEmpty) ? "true" : "false";// Output: trueecho isset($statementZero) ? "true" : "false";// Output: trueecho empty($statement1) ? "true" : "false";// Output: falseecho empty($statementEmpty) ? "true" : "false";// Output: trueecho empty($statementZero) ? "true" : "false";// Output: trueecho is_string($statement1) ? "true" : "false";// Output: trueecho is_string($statementEmpty) ? "true" : "false";// Output: trueecho is_string($statementZero) ? "true" : "false";// Output: true?>
6. Object
Tipe data object merupakan tipe data yang dapat berisi data dan method (function). object dapat juga diartikan sebagai instance dari sebuah class. object disebut sebagai tipe data yang abstrak, berfungsi untuk menampung data dan method yang dapat diakses menggunakan operator ->
.
Untuk melakukan evaluasi tipe data object, kita dapat menggunakan fungsi is_object()
.
<?php
class Contoh {// data-data// method-methodfunction Contoh() {$this->keterangan = "Tidak ada ...";}}$first_object = new Contoh;echo gettype($first_object);// Output: objectecho $first_object->keterangan;// Output: Tidak ada ...echo $first_object->contoh;// Output: Notice: Undefined property: Contoh::$contohecho isset($first_object) ? "true" : "false";// Output: trueecho isset($first_object->keterangan) ? "true" : "false";// Output: trueecho isset($first_object->contoh) ? "true" : "false";// Output: falseecho empty($first_object) ? "true" : "false";// Output: falseecho empty($first_object->keterangan) ? "true" : "false";// Output: falseecho empty($first_object->contoh) ? "true" : "false";// Output: trueecho is_object($first_object) ? "true" : "false";// Output: true$second_object = new stdClass;$second_object->nilai1 = "Nilai pertama";$second_object->nilai2 = 2;var_dump($second_object);// Output: object(stdClass)#1 (2) { ["nilai1"]=> string(13) "Nilai pertama" ["nilai2"]=> int(2) }?>
7. Array
Tipe data array merupakan tipe data yang dapat memuat lebih dari satu nilai (value), umumnya digunakan untuk memuat data yang saling berhubungan. Masing-masing nilai dari array diakses menggunakan index atau key.
Sebuah array dapat berupa indexed array jika array menggunakan index dimulai dari angka 0. Selain itu, array juga dapat berupa associative array dengan key yang dapat kita tentukan sendiri. Pada dasarnya, semua array dalam PHP merupakan associative array. Namun, dalam konvensinya, associative array ditujukan secara spesifik untuk array yang memiliki satu atau lebih key bukan angka (menggunakan index).
Pada PHP, penulisan array dapat menggunakan array(...)
dan [...]
. Namun, penulisan dengan [...]
terlihat lebih rapi dan modern.
Untuk melakukan evaluasi tipe data array, kita dapat menggunakan fungsi is_array()
.
<?php
$foods = ["Spaghetti", "Bread", "Steak", "fastFood" => "Burger"];echo gettype($foods);// Output: arrayecho $foods[2];// Akses nilai dari array menggunakan index// Output: Steakecho $foods["fastFood"];// Akses nilai dari array menggunakan key// Output: Burgerecho $foods[5];// Output: Notice: Undefined offset: 5echo isset($foods) ? "true" : "false";// Output: trueecho isset($foods[2]) ? "true" : "false";// Output: trueecho isset($foods[5]) ? "true" : "false";// Output: falseecho empty($foods) ? "true" : "false";// Output: falseecho empty($foods[2]) ? "true" : "false";// Output: falseecho empty($foods[5]) ? "true" : "false";// Output: trueecho is_array($foods) ? "true" : "false";// Output: truevar_dump($foods);// Output: array(4) { [0]=> string(9) "Spaghetti" [1]=> string(5) "Bread" [2]=> string(5) "Steak" ["fastFood"]=> string(6) "Burger" }?>
Evaluasi Tipe Lainnya [Pengayaan]
Selain melakukan evaluasi tipe data, kita juga dapat memanfaatkan beberapa fungsi tambahan yang disediakan PHP untuk melakukan evaluasi keadaan tipe tertentu.
is_finite()
berguna untuk menentukan apakah sebuah nilai terhingga (masih dalam range yang diperbolehkan pada PHP float).is_infinite()
berguna untuk menentukan apakah sebuah nilai tidak terhingga (di luar range yang diperbolehkan pada PHP float).is_numeric()
berguna untuk menentukan apakah sebuah nilai merupakan angka atau string berupa angka.is_nan()
berguna untuk menentukan apakah sebuah nilai bukan angka (not a number).
<?php
$zeroLog = log(0); // infinity$oneThousand = 1000;$twoThousand = '2000';$boolFalse = false;$acosValue = acos(1.1); // NaN (not a number)echo is_finite($zeroLog) ? "true" : "false";// Output: falseecho is_finite($oneThousand) ? "true" : "false";// Output: trueecho is_infinite($zeroLog) ? "true" : "false";// Output: trueecho is_infinite($oneThousand) ? "true" : "false";// Output: falseecho is_numeric($zeroLog) ? "true" : "false";// Output: trueecho is_numeric($oneThousand) ? "true" : "false";// Output: trueecho is_numeric($twoThousand) ? "true" : "false";// Output: trueecho is_numeric($boolFalse) ? "true" : "false";// Output: falseecho is_nan($oneThousand) ? "true" : "false";// Output: falseecho is_nan($acosValue) ? "true" : "false";// Output: true?>