Định nghĩa và cách sử dụng
PHP được biết đến như một ngôn ngữ kiểu động (dynamically typed). Khai báo kiểu tường minh cho biến không cần thiết cũng không được hỗ trợ trong PHP. Khác với C, C++ và Java, kiểu của biến PHP được quyết định bởi giá trị được gán cho nó, chứ không ngược lại. Hơn nữa, khi một biến được gán giá trị khác kiểu, kiểu của nó cũng thay đổi theo. Cách tiếp cận này của PHP để xử lý giá trị biến thay đổi động được gọi là type juggling (ép kiểu tự động).
$var = "Hello"; // biến kiểu string $var = 100; // cùng biến giờ thành int
Type juggling cũng xảy ra trong quá trình tính toán biểu thức. Trong ví dụ này, một biến string chứa chữ số tự động chuyển thành integer để thực hiện phép cộng:
Ví dụ
Cộng số và chuỗi số
<?php $var1 = 100; $var2 = "100"; $var3 = $var1 + $var2; var_dump($var3); ?>
Kết quả
int(200)
Chuỗi bắt đầu bằng chữ số
Nếu chuỗi bắt đầu bằng chữ số, các ký tự không phải số ở cuối sẽ bị bỏ qua khi tính toán. Tuy nhiên, PHP sẽ phát sinh notice:
<?php $var1 = 100; $var2 = "100 days"; $var3 = $var1 + $var2; var_dump($var3); ?>
Kết quả
PHP Notice: A non well formed numeric value encountered in ... int(200)
Ép kiểu tường minh (Type Casting)
Ép kiểu buộc biến được sử dụng như một kiểu nhất định. Script sau minh họa các toán tử ép kiểu khác nhau:
Ví dụ các toán tử ép kiểu
<?php $var1 = 100; $var2 = (boolean)$var1; $var3 = (string)$var1; $var4 = (array)$var1; $var5 = (object)$var1; var_dump($var2, $var3, $var4, $var5); ?>
Kết quả
bool(true)
string(3) "100"
array(1) {
[0] => int(100)
}
object(stdClass)#1 (1) {
["scalar"] => int(100)
}
Ép kiểu sang string bằng dấu nháy kép
Ép kiểu sang string cũng có thể thực hiện bằng cách đặt biến trong chuỗi dấu nháy kép:
<?php $var1 = 100.50; $var2 = (string)$var1; $var3 = "$var1"; var_dump($var2, $var3); ?>
Kết quả
string(5) "100.5" string(5) "100.5"