PHP #06 - Variabel & Tipe Data (Bag. I)

29 Jul 2020 • ⏳ ~ 11 menit

 

Variabel dan Konvensi

Variabel adalah tempat menampung nilai (value) atau informasi di memori. Nilai variabel dapat berubah-ubah selama proses program dieksekusi. Artinya, penyimpanan nilai pada variabel bersifat sementara dan hanya berlangsung selama program berjalan.

Dalam PHP, terdapat beberapa aturan penamaan yang harus diikuti.

  • Variabel diawali dengan tanda $, diikuti dengan nama variabel. Contoh: $nama_variabel.
  • Penamaan variabel bersifat case-sensitive. Hal ini berarti bahwa penamaan variabel menggunakan huruf kapital berbeda dengan huruf kecil. Contoh: variabel $Text berbeda dengan variabel $text dan variabel $TEXT.
  • Penamaan variabel diawali dengan huruf atau underscore dan tidak boleh diawali dengan angka. Kemudian diikuti oleh huruf, angka, atau underscore. Dengan demikian, nama variabel yang valid hanya boleh mengandung alpha-numeric (a-z, A-Z, dan 0-9) dan underscore.

Berikut adalah beberapa contoh penamaan variabel yang valid dan tidak valid.

$var        # valid
$Var        # valid
$_var       # valid
$_1var      # valid

$var&    // invalid
$!var    // invalid
$_var%   // invalid
$1var    // invalid

Dalam penamaan variabel, alangkah baiknya kita memberikan nama yang singkat dan jelas. Penamaan yang baik akan memudahkan pemrogram saat melakukan debugging atau maintaining kode serta melakukan kolaborasi bersama dengan pemrogram lainnya. Nama variabel sebaiknya mudah dimengerti dan tidak menimbulkan kebingungan atau dualisme makna. Nama variabel yang baik mencerminkan fungsi dan nilai dari variabel tersebut.

Berikut adalah beberapa contoh penamaan variabel yang baik dan tidak baik.

$n1 = "Jeanne";      // tidak baik
$n2 = "Quenne";      // tidak baik

$first_name = "Jeanne";     # baik
$last_name = "Quenne";      # baik

Nama variabel yang memuat lebih dari satu kata dapat menerapkan case style snake_case atau camelCase.

Contoh penggunaan snake_case atau camelCase sebagai berikut:

$variable_name  // snake_case
$variableName   // camelCase

Inisialisasi Variabel

Inisialisasi variabel berarti memberi nilai pada suatu variabel. Inisialisasi memanfaatkan operator assignment berupa tanda = untuk meng-assign/memberi nilai ke variabel. PHP termasuk loosely type language sehingga dalam melakukan inisialisasi variabel tidak terikat pada suatu tipe tertentu.

Contoh:

<?php
  $id = 8;
  // Variabel $id diinisialisasi dengan nilai 8
  // PHP secara otomatis menetapkan tipe data variabel $id sebagai integer

  $program_name = "Inisialisasi variabel PHP";
  // Variabel $program_name diinisialisasi dengan nilai "Inisialisasi variabel PHP"
  // PHP secara otomatis menetapkan tipe data variabel $program_name sebagai string

  echo "Mari kita belajar cara $program_name #$id.";
?>
Mari kita belajar cara Inisialisasi variabel PHP #8.

Pada keadaan tertentu, kita juga dapat membentuk suatu variabel tanpa nilai. Kondisi inilah yang disebut dengan deklarasi variabel. Walaupun dalam penerapannya, kita tidak perlu melakukan deklarasi variabel di awal program. Kita dapat langsung melakukan inisialisasi variabel sesaat sebelum variabel tersebut digunakan pada program.

Contoh:

<?php
  $name;  // deklarasi variabel $name
?>

Apabila hendak mengganti nilai suatu variabel, kita dapat melakukan reassignment dengan cara yang sama seperti melakukan inisialisasi. Karena termasuk loosely type language, PHP secara otomatis menyesuaikan tipe data nilai baru tanpa mempertimbangkan tipe data nilai sebelumnya.

Contoh:

<?php
  $id = 50;
  // Variabel $id diinisialisasi dengan nilai 50
  // PHP secara otomatis menetapkan tipe data variabel $id sebagai integer

  $first_name = "John";
  $last_name = "Samuel";
  echo "$id - $first_name $last_name";

  $id = '050';
  // Variabel $id diinisialisasi kembali dengan nilai 050
  // PHP secara otomatis menetapkan tipe data variabel $id sebagai string

  $last_name = "Winner";
  echo "$id - $first_name $last_name";
?>
50 - John Samuel
050 - John Winner

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 nilai false apabila sebuah variabel dideklarasi dan memiliki nilai tidak kosong dan angka bukan nol '0'.

Berikut adalah beberapa nilai yang mengembalikan nilai false pada fungsi empty():

  • "” (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: NULL
  echo gettype($varBoolean);  // Output: boolean
  echo gettype($varInteger);  // Output: integer
  echo gettype($varDouble);   // Output: double
  echo gettype($varString);   // Output: string
  echo gettype($varArray);    // Output: array
  echo 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: NULL

  echo gettype($nullVariable);
  // Output: NULL

  echo isset($undefinedVariable) ? "true" : "false";
  // Output: false
  echo isset($nullVariable) ? "true" : "false";
  // Output: false

  echo empty($undefinedVariable) ? "true" : "false";
  // Output: true
  echo empty($nullVariable) ? "true" : "false";
  // Output: true

  echo is_null($undefinedVariable) ? "true" : "false";
  // Notice: Undefined variable: undefinedVariable
  // Output: true

  echo 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: boolean
  echo gettype($varFalse);
  // Output: boolean

  echo isset($varTrue) ? "true" : "false";
  // Output: true
  echo isset($varFalse) ? "true" : "false";
  // Output: true

  echo empty($varTrue) ? "true" : "false";
  // Output: false
  echo empty($varFalse) ? "true" : "false";
  // Output: true

  echo is_bool($varTrue) ? "true" : "false";
  // Output: true
  echo 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 negatif

  echo gettype($decimalPos);
  // Output: integer
  echo gettype($decimalNeg);
  // Output: integer
  
  echo isset($hexadecimalPos) ? "true" : "false";
  // Output: true
  echo isset($hexadecimalNeg) ? "true" : "false";
  // Output: true

  echo empty($decimalPos) ? "true" : "false";
  // Output: false
  echo empty($zeroValue) ? "true" : "false";
  // Output: true
  echo empty($decimalNeg) ? "true" : "false";
  // Output: false

  echo is_int($octalPos) ? "true" : "false";
  // Output: true
  echo 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 kebenaran true. Hal ini dikarenakan NAN 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: double
  echo gettype($floatNeg);
  // Output: double
  
  echo isset($floatExpo) ? "true" : "false";
  // Output: true
  echo isset($floatEnot) ? "true" : "false";
  // Output: true

  echo empty($floatPos) ? "true" : "false";
  // Output: false
  echo empty($zeroValue) ? "true" : "false";
  // Output: true
  echo empty($floatNeg) ? "true" : "false";
  // Output: false

  echo is_float($floatPos) ? "true" : "false";
  // Output: true
  echo 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: string
  echo gettype($statement2);
  // Output: string
  
  echo isset($statement1) ? "true" : "false";
  // Output: true
  echo isset($statementEmpty) ? "true" : "false";
  // Output: true
  echo isset($statementZero) ? "true" : "false";
  // Output: true

  echo empty($statement1) ? "true" : "false";
  // Output: false
  echo empty($statementEmpty) ? "true" : "false";
  // Output: true
  echo empty($statementZero) ? "true" : "false";
  // Output: true

  echo is_string($statement1) ? "true" : "false";
  // Output: true
  echo is_string($statementEmpty) ? "true" : "false";
  // Output: true
  echo 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-method

    function Contoh() {
      $this->keterangan = "Tidak ada ...";
    }
  }

  $first_object = new Contoh;

  echo gettype($first_object);
  // Output: object
  echo $first_object->keterangan;
  // Output: Tidak ada ...
  echo $first_object->contoh;
  // Output: Notice: Undefined property: Contoh::$contoh

  echo isset($first_object) ? "true" : "false";
  // Output: true
  echo isset($first_object->keterangan) ? "true" : "false";
  // Output: true
  echo isset($first_object->contoh) ? "true" : "false";
  // Output: false

  echo empty($first_object) ? "true" : "false";
  // Output: false
  echo empty($first_object->keterangan) ? "true" : "false";
  // Output: false
  echo empty($first_object->contoh) ? "true" : "false";
  // Output: true

  echo 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: array
  echo $foods[2];
  // Akses nilai dari array menggunakan index
  // Output: Steak
  echo $foods["fastFood"];
  // Akses nilai dari array menggunakan key
  // Output: Burger
  echo $foods[5];
  // Output: Notice: Undefined offset: 5

  echo isset($foods) ? "true" : "false";
  // Output: true
  echo isset($foods[2]) ? "true" : "false";
  // Output: true
  echo isset($foods[5]) ? "true" : "false";
  // Output: false

  echo empty($foods) ? "true" : "false";
  // Output: false
  echo empty($foods[2]) ? "true" : "false";
  // Output: false
  echo empty($foods[5]) ? "true" : "false";
  // Output: true

  echo is_array($foods) ? "true" : "false";
  // Output: true

  var_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: false
  echo is_finite($oneThousand) ? "true" : "false";
  // Output: true
  
  echo is_infinite($zeroLog) ? "true" : "false";
  // Output: true
  echo is_infinite($oneThousand) ? "true" : "false";
  // Output: false
  
  echo is_numeric($zeroLog) ? "true" : "false";
  // Output: true
  echo is_numeric($oneThousand) ? "true" : "false";
  // Output: true
  echo is_numeric($twoThousand) ? "true" : "false";
  // Output: true
  echo is_numeric($boolFalse) ? "true" : "false";
  // Output: false
  
  echo is_nan($oneThousand) ? "true" : "false";
  // Output: false
  echo is_nan($acosValue) ? "true" : "false";
  // Output: true
?>
PHP

PHP #07 - Variabel & Tipe Data (Bag. II)

PHP #05 - Mendalami Output

comments powered by Disqus