Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Ép kiểu tự động (Type Juggling) trong PHP

Đị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"