PHP Academy · Pelajaran

Pengacakan Tipe dan Pengecoran Tipe

Pahami cara PHP mengonversi tipe secara otomatis dan cara melakukan pengecoran secara manual.

Pelajaran 4 dari 413 langkah

Pengacakan Tipe dan Pengecoran Tipe adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Apa Itu Konversi Tipe Otomatis?

Konversi tipe otomatis berarti PHP secara otomatis mengubah tipe suatu nilai ketika operator atau fungsi memerlukan tipe yang berbeda.

Hal ini memang praktis, tetapi dapat menyebabkan kesalahan tersembunyi jika Anda tidak memahami aturannya.

Konversi Tipe dalam Aritmetika

PHP mengonversi string menjadi angka ketika digunakan dalam konteks aritmetika:

<?php
echo '5' + 3;       // 8  — string '5' becomes int 5
echo '5.5' + 1.5;   // 7  — string '5.5' becomes float
echo '5 cats' + 1;  // 6  — leading numeric part used, rest ignored
echo 'cats' + 1;    // 1  — non-numeric string becomes 0

Perbandingan Longgar ==

Operator == membandingkan nilai setelah konversi tipe otomatis — hal ini dapat menghasilkan hasil yang mengejutkan:

<?php
var_dump(0 == 'a');      // true in PHP 7 (both become 0)
                          // false in PHP 8 (improved rules!)
var_dump('' == false);   // true
var_dump('1' == true);   // true
var_dump(null == false); // true

Perbandingan Ketat ===

Selalu gunakan === untuk membandingkan nilai dan tipe — tidak ada konversi tipe otomatis:

<?php
var_dump(1 === '1');   // false — different types
var_dump(1 === 1);     // true
var_dump(null === false); // false
var_dump(0 === false); // false

// Rule of thumb: prefer === unless you explicitly need type coercion

Konversi Tipe Eksplisit

Konversikan nilai ke tipe tertentu dengan menambahkan awalan (type):

<?php
$str = '42.7';

$int   = (int)    $str;  // 42
$float = (float)  $str;  // 42.7
$bool  = (bool)   $str;  // true
$arr   = (array)  $str;  // ['42.7']

echo $int;   // 42
echo $float; // 42.7

Fungsi settype()

settype() mengubah tipe variabel secara langsung dan mengembalikan true/false:

<?php
$value = '123';
settype($value, 'integer');

var_dump($value); // int(123)

// Alternative: intval(), floatval(), strval() functions
$n = intval('0xFF', 16); // 255 — parse hex string

Kasus Khusus Konversi String ke Angka

Aturan utama saat PHP mengonversi string menjadi angka:

  • Spasi di awal diabaikan: ' 42 ' → 42
  • Awalan bukan numerik: 'php8' → 0 (notifikasi PHP 8)
  • Notasi ilmiah: '1e3' → 1000.0
  • String heksadesimal: '0x1A' tidak otomatis dikonversi menjadi int di PHP 7+

Aturan Konversi Boolean

Nilai-nilai berikut dikonversi menjadi false; semua nilai lainnya menjadi true:

<?php
$falsy = [false, 0, 0.0, '', '0', [], null];

foreach ($falsy as $v) {
    var_dump((bool) $v); // all bool(false)
}

// Careful:
var_dump((bool) '0');   // false — the STRING '0' is falsy!
var_dump((bool) '00');  // true  — only exactly '0' is falsy

intval() dengan Basis

intval() menerima parameter basis opsional untuk mengurai string numerik:

<?php
echo intval('0b1010', 2);  // 10  — binary
echo intval('077', 8);     // 63  — octal
echo intval('1F', 16);     // 31  — hexadecimal
echo intval('42');         // 42  — decimal (default base 10)

Konversi Tipe Otomatis yang Disempurnakan di PHP 8

PHP 8 memperbaiki beberapa perilaku konversi tipe otomatis yang tidak konsisten dari versi sebelumnya:

  • 0 == 'foo' sekarang menjadi false (sebelumnya true di PHP 7)
  • Saat membandingkan angka dengan string nonnumerik, string tidak lagi dipaksa menjadi 0
  • Hal ini membuat PHP 8 lebih aman, tetapi dapat merusak kode lama yang bergantung pada perilaku sebelumnya

Menghindari Bug Konversi Tipe

Praktik terbaik untuk menghindari kejutan akibat konversi tipe otomatis:

<?php
declare(strict_types=1);  // enforce types at function boundaries

// Always use === for comparisons
if ($status === 'active') { /* safe */ }

// Cast explicitly before arithmetic
$total = (float) $_POST['price'] * (int) $_POST['qty'];

// Validate with filter_var
$age = filter_var($_POST['age'], FILTER_VALIDATE_INT);
if ($age === false) { /* invalid input */ }

Pemeriksaan Singkat

Menjadi apa hasil evaluasi (int) '42abc' di PHP?

Ringkasan: Konversi Tipe Otomatis

Hal-hal yang telah Anda pelajari tentang penanganan tipe PHP:

  • PHP secara otomatis memaksa tipe dalam operasi — inilah konversi tipe otomatis
  • == membandingkan setelah konversi tipe otomatis; === bersifat ketat (tipe + nilai)
  • Lakukan konversi secara eksplisit dengan (int), (float), (string), (bool)
  • Gunakan intval(), floatval(), strval() sebagai alternatif berbasis fungsi
  • PHP 8 menyempurnakan beberapa kasus khusus konversi tipe otomatis
  • Aktifkan strict_types=1 untuk mengurangi kejutan dalam kode Anda
Gratis untuk memulai

Belajar PHP dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
49
Pelajaran
195

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pengacakan Tipe dan Pengecoran Tipe” gratis?

Ya — teks lengkap “Pengacakan Tipe dan Pengecoran Tipe” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pengacakan Tipe dan Pengecoran Tipe”?

Pahami cara PHP mengonversi tipe secara otomatis dan cara melakukan pengecoran secara manual. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Pengacakan Tipe dan Pengecoran Tipe” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mendeklarasikan Variabel dalam PHP
  2. Ikhtisar Tipe Data PHP
  3. Output Echo dan Print
  4. Pengacakan Tipe dan Pengecoran Tipe
← Kembali ke PHP Academy