Tipe Data Skalar
Empat tipe data dasar PHP: integer, float, string, dan boolean, plus cara memeriksanya.
Analogi: Jenis Bahan Masakan
Koki membedakan bahan: garam ditakar dengan sendok teh, air dengan liter, telur dihitung per butir. Salah memperlakukan bahan (misalnya menimbang air dengan "butir") hasilnya kacau. Tipe data adalah "jenis bahan" dalam program: ia memberi tahu PHP bagaimana memperlakukan sebuah nilai, apakah sebagai angka yang bisa dihitung, teks yang bisa disambung, atau jawaban ya/tidak.
PHP punya 4 tipe data skalar (nilai tunggal, bukan kumpulan): int (bilangan bulat), float (desimal), string (teks), dan bool (benar/salah).
Kenapa Tipe Data Penting?
Karena operasi yang masuk akal untuk satu tipe bisa tidak masuk akal untuk tipe lain. Menjumlah 10 + 5 menghasilkan 15 (matematika). Menyambung "10" . "5" menghasilkan "105" (teks). Kalau PHP tidak tahu sebuah nilai itu angka atau teks, ia tidak tahu operasi mana yang kamu maksud. Tipe data menghilangkan ambiguitas itu.
<?php
// Contoh 1: empat tipe skalar dan cara mengenalinya
$umur = 17; // int: bilangan bulat
$tinggi = 165.5; // float: ada koma (pakai titik, bukan koma!)
$nama = "Sinta"; // string: selalu dalam kutip
$sudahBayar = true; // bool: hanya true atau false
var_dump($umur); // int(17)
var_dump($tinggi); // float(165.5)
var_dump($nama); // string(5) "Sinta"
var_dump($sudahBayar); // bool(true)var_dump() adalah sahabat terbaikmu saat belajar: ia membongkar isi variabel sekaligus tipenya. Setiap kali bingung "ini sebenarnya tipe apa?", panggil var_dump().
<?php
// Contoh 2: tipe menentukan perilaku operasi
$harga = 10000; // int
$diskon = 0.1; // float (10%)
$total = $harga - ($harga * $diskon);
var_dump($total); // float(9000) -> hasil campuran int dan float jadi float
$judul = "Total bayar: ";
echo $judul . $total; // string . float -> teks "Total bayar: 9000"
$stokHabis = false;
if ($stokHabis) {
echo "Maaf, habis.";
} else {
echo "Stok tersedia."; // bool mengendalikan alur program
}Kesalahan Umum Pemula
Salah: menulis desimal dengan koma.
<?php
$tinggi = 165,5; // SALAH! Koma bukan pemisah desimal di PHPPHP memakai titik untuk desimal: $tinggi = 165.5;. Koma di PHP punya arti lain (pemisah argumen), jadi $tinggi = 165,5; akan error atau berperilaku aneh.
Salah: lupa kutip pada string.
<?php
$nama = Sinta; // SALAH: PHP mengira Sinta adalah nama konstantaTeks wajib dalam kutip: $nama = "Sinta";. Tanpa kutip, PHP mencari sesuatu bernama Sinta dan memberi error.
Salah: memakai string angka untuk perhitungan tanpa sadar.
<?php
$harga = "10000"; // string, bukan int!
$jumlah = "3";
echo $harga * $jumlah; // Hasil 30000, tapi...
var_dump($harga * $jumlah); // int(30000): PHP diam-diam mengubah tipePHP memang "baik hati" mengubah string angka menjadi angka saat dihitung (ini namanya type juggling, dibahas di modul berikutnya), tapi jangan mengandalkannya. Kalau datanya angka, simpan sebagai angka sejak awal.
Kapan Memakai Tipe Apa?
Panduan cepat memilih tipe untuk data umum:
- int untuk hal yang dihitung bulat: umur, jumlah barang, stok, ID. Uang pun sebaiknya int dalam satuan terkecil (rupiah, bukan "15 ribu koma 5").
- float untuk pengukuran: berat, tinggi, suhu, rata-rata nilai. Hindari float untuk uang karena masalah presisi (
0.1 + 0.2tidak tepat 0.3). - string untuk teks bebas: nama, alamat, deskripsi. Juga untuk data yang terlihat seperti angka tapi tidak dihitung: nomor HP, kode pos, NIK. Menyimpan "08123" sebagai int akan menghilangkan nol depannya!
- bool untuk status ya/tidak: sudah bayar, aktif, lolos validasi.
Kesalahan klasik: menyimpan nomor telepon sebagai int lalu heran kenapa "0812" menjadi "812". Kalau tidak akan dijumlah/dikurang, simpan sebagai string.
Catatan teknis:
boolhanya punya dua nilai:truedanfalse(huruf kecil, tanpa kutip). Nilai0, string kosong"", dannulljuga dianggap "false" dalam konteks boolean, konsep yang disebut falsy dan akan sering kamu temui di percabangan.
Tantangan
Tebak tipe data
Tanpa menjalankan dulu, tebak output var_dump() untuk: 42, "42", 4.2, true, 0. Lalu buat file dan jalankan untuk memeriksa tebakanmu.