Variabel & Tipe Data
Variabel, tipe scalar (string, int, float, bool), null, konstanta, interpolasi string, heredoc, dan konversi tipe.
Variabel
Variabel adalah "kotak bernama" untuk menyimpan nilai. Di PHP, variabel diawali $ dan tidak perlu dideklarasikan tipenya (PHP menebak sendiri — disebut dynamic typing).
$nama = "Sari";
$umur = 25;
$nama = "Dewi"; // nilai boleh diganti kapan saja
Aturan penamaan: boleh huruf, angka, dan garis bawah; tidak boleh diawali angka. Gaya yang umum: camelCase atau snake_case — pilih satu dan konsisten (PSR-12 menyarankan camelCase untuk variabel).
Tipe data scalar
| Tipe | Contoh | Keterangan |
|---|---|---|
string | "halo", 'halo' | Teks |
int | 42, -7, 1_000_000 | Bilangan bulat; garis bawah memudahkan membaca angka besar |
float | 3.14, 1.5e3 | Bilangan desimal |
bool | true, false | Benar / salah |
null | null | "Tidak ada nilai" |
Tipe majemuk: array, object, callable, iterable — dibahas di bab berikutnya. Cek tipe dengan gettype($x), var_dump($x) (menampilkan tipe + nilai, sangat berguna untuk debugging), atau is_int(), is_string(), dst.
Kutip tunggal vs ganda
$nama = "Sari";
echo 'Halo $nama\n'; // Halo $nama\n (apa adanya)
echo "Halo $nama\n"; // Halo Sari + baris baru
echo "Halo {$nama}!"; // kurung kurawal untuk kepastian
echo "Total: {$data['harga']}"; // elemen array di dalam teks
Kutip ganda melakukan interpolasi (variabel dan escape seperti \n, \t dihitung). Kutip tunggal tidak. Untuk teks panjang, pakai heredoc (interpolasi) atau nowdoc (tanpa interpolasi):
$surat = <<<TEKS
Yth. {$nama},
Terima kasih sudah mendaftar.
TEKS;
Konstanta
const PPN = 0.11; // di luar class
define('NAMA_TOKO', 'Toko Maju'); // cara lama, tetap valid
echo PPN * 100; // tanpa $
Nilai konstanta tidak bisa diubah setelah dibuat. Konstanta ajaib berguna: __LINE__, __FILE__, __DIR__, PHP_INT_MAX, PHP_EOL.
Konversi tipe (type juggling)
PHP otomatis mengubah tipe saat diperlukan: "5" + 3 menghasilkan 8. Ini praktis tetapi sumber bug. Di PHP 8, string non-angka seperti "abc" + 1 melempar TypeError. Konversi eksplisit dengan cast:
$a = (int) "42abc"; // 42
$b = (float) "3.5"; // 3.5
$c = (string) 99; // "99"
$d = (bool) ""; // false
$e = intdiv(17, 5); // 3 (pembagian bulat)
Nilai yang dianggap false saat dikonversi ke bool: false, 0, 0.0, "", "0", [], null. Selain itu true.
Perbandingan: == vs ===
== membandingkan nilai setelah konversi tipe, === membandingkan nilai dan tipe. Biasakan memakai ===. PHP 8 memperbaiki perbandingan angka dengan string: 0 == "abc" kini false (di PHP 7 hasilnya true).
Operator null-safe untuk variabel kosong
Operator ?? (null coalescing) memberi nilai cadangan bila variabel belum ada atau null: $kota = $input['kota'] ?? 'Jakarta';. Operator ??= mengisi hanya jika masih kosong: $config['debug'] ??= false;