Perubahan tipe variabel (juggling)
PHP tidak memerlukan (atau tidak mendukung) menentukan jenis variabelnya dalam variabel yang dideklarasikan, jenis variabel ditentukan oleh konteks di mana variabel tersebut digunakan, yaitu jika Anda menetapkan string ke variabel var Nilainya; dari var menjadi variabel string. Jika Anda menetapkan bilangan bulat ke var, itu menjadi variabel bilangan bulat.
Contoh PHP yang secara otomatis mengkonversi tipe variabel adalah operator penjumlahan '+'. Jika ada operan yang bernilai ganda, maka semua operan dievaluasi sebagai ganda, dan hasilnya juga ganda. Jika tidak, operan akan dianggap bilangan bulat dan hasilnya akan berupa bilangan bulat. Perhatikan bahwa ini tidak mempengaruhi jenis variabel dari setiap operan itu sendiri, satu-satunya perubahan adalah bagaimana operan diproses selama penghitungan.
$foo = "0"; // $foo adalah string dengan nilai "0" (ASCII 48)
$foo++; // $foo adalah string dengan nilai "1" (ASCII 49)
$foo += 1; // $foo sekarang menjadi bilangan bulat (2)
$foo = $foo + 1.3; // $foo sekarang menjadi bilangan bulat (3.3)
$foo = 5 + "10 Little Piggies"; (15)
$foo = 5 + "10 Babi Kecil"; // $foo adalah bilangan bulat (15)
Jika menurut Anda dua ekspresi terakhir pada contoh di atas terlihat sedikit aneh, silakan lihat bagian "Konversi String".
Jika Anda ingin memaksa suatu variabel untuk dievaluasi sebagai tipe tetap, lihat bagian "Casting". Jika Anda ingin mengubah tipe suatu variabel, silakan lihat deskripsi fungsi "settype()".
Tentukan jenis variabel
Karena PHP menentukan jenis variabel itu sendiri dan umumnya menampilkannya sesuai kebutuhan, jenis variabel tertentu tidak selalu jelas. PHP menyertakan fungsi untuk mengetahui jenis variabel ini. Fungsi-fungsi tersebut adalah gettype(), is_long(), is_double(), is_string(), is_array(), dan is_object().
tipe pengecoran
Tipe pemaksaan di PHP kurang lebih sama dengan bahasa C: tuliskan tipe yang diperlukan dalam tanda kurung di depan variabel yang akan dipaksa.
$foo = 10; // $foo adalah bilangan bulat
$bar = (ganda) $foo;
Metode pemaksaan berikut diperbolehkan:
(int), (integer) – memaksa ke integer
(nyata), (ganda), (mengambang) – memaksa untuk menggandakan
(string) – memaksa untuk merangkai
(array) – memaksa ke array
(objek) – memaksa untuk menolak
Perhatikan bahwa tab dan spasi diperbolehkan dalam tanda kurung, sehingga pernyataan berikut ini setara:
$foo = (int) $bar;
$foo = ( int ) $bar;
Konversi string
Ketika sebuah string dievaluasi sebagai nilai numerik, hasil dan tipenya ditentukan seperti dijelaskan di bawah.
Jika string ini berisi karakter '.', 'e', atau 'E', maka string tersebut diperlakukan sebagai variabel tipe ganda, jika tidak, string tersebut dianggap sebagai bilangan bulat.
Nilai string ini ditentukan oleh awalan. Jika string dimulai dengan data numerik yang valid, maka data numerik tersebut adalah nilai yang digunakan untuk mengevaluasi string tersebut. Jika tidak, nilainya nol. Data numerik yang valid mengikuti notasi berikut, diikuti oleh satu atau lebih digit (yang mungkin menyertakan koma desimal), diikuti oleh eksponen opsional. Eksponen dibentuk oleh satu atau lebih angka yang diikuti dengan 'e' atau 'E'.
$foo = 1 + "10.5"; // $foo adalah ganda (11.5)
$foo = 1 + "-1.3e3"; // $foo adalah ganda (-1299)
$foo = 1 + "bob -1.3 e3"; // $foo adalah bilangan bulat (1)
$foo = 1 + "bob3"; // $foo adalah bilangan bulat (1)
$foo = 1 + "10 Babi Kecil"; // $foo adalah bilangan bulat ( 11)
$foo = 1 + "10 Little Piggies";//
$foo adalah bilangan bulat (11);
Untuk informasi lebih lanjut, lihat bagian manual Unix di strtod(3).