Như chúng ta đã được học, PHP có rất nhiều kiểu dữ liệu. Nhưng khác một chút với các ngôn ngữ khác, các biến trong PHP lại không được gán một kiểu dữ liệu nhất định, và các kiểu dữ liệu đó được tự do chuyển đổi từ kiểu này sang kiểu khác trong quá trình thực thi.
Trong phần này, chúng ta sẽ bàn luận về việc chuyển đổi kiểu dữ liệu trong PHP.
Có 2 cách cơ bản để chuyển từ kiểu dữ liệu này sang kiểu dữ liệu khác trong PHP.
Chuyển đổi toàn vẹn (Implicit Type Conversions)
Đó là cách phổ biến nhất trong việc chuyển kiểu dữ liệu mà bạn thấy, thật ra, đó là do PHP tự động làm cho bạn. Nghĩa là thay vì tự bạn yêu cầu một kiểu dữ liệu xác định, PHP tự quyết định xem đó là kiểu dữ liệu gì cho chúng ta.
Đó là những loại chuyển đổi sau:
Các phép tính có toán tử: Nếu PHP nhận thấy một phép toán giữa số nguyên và số phức, thì kết quả nó trả về là số phức. Nếu một chuỗi cộng với một số bất kỳ, PHP sẽ cố chuyển chuỗi đó sang dạng số trước khi làm phép cộng với số đã cho. Ví dụ:
PHP Code:
echo "5" + 2; // kết quả là 7
?>
Các biểu thức boolean: Được dùng khi PHP thấy một biểu thức phải phát sinh ra kết quả Boolean. Khi đó, nó sẽ được tự chuyển sang Boolean trước khi tiếp tục.
Những phương thức xuất ra chuỗi: Có những phương thức mà kết quả BẮT BUỘC phải xuất ra chuỗi (như print, echo..) hoặc những toán tử nối kết (.). Khi đó, PHP luôn cố gắng để chuyển đổi các kiểu không-phải-chuỗi (non-string) ra kiễu chuỗi (string).
Chuyển đổi không toàn vẹn (Explicit Type Conversions)
Trong trường hợp này, PHP không chuyển đổi một cách thông thường, bạn phải quyết định xem kiểu dữ liệu nào bạn muốn có. Hãy xem xét ví dụ này:
PHP Code:
$doubleNumber = 10.5;
echo("We have a double number: ".$doubleNumber."
"); // Kết quả là 10.5
$intNumber = (int) $doubleNumber;
echo("Now, it is integer: ".$intNumber); // Kết quả là 10
?>
Rõ ràng, cách chuyển đổi kiểu dữ liệu này không giữ nguyên tính toàn vẹn của dữ liệu của chúng ta (từ 10.5, chúng ta chỉ còn 10 khi chuyển từ dạng số phức sang dạng số nguyên).
Các khai báo để chuyển dữ liệu dạng không toàn vẹn như sau:
• (int), (integer) Chuyển sang dạng số nguyên.
• (float), (double), (real) Chuyển sang dạng số có phần thập phân
• (string) Chuyển sang dạng chuỗi
• (bool), (boolean) Chuyển sang dạng Boolean
• (array) Chuyển sang dạng mảng
• (object) Chuyển sang một đối tượng nào đó (có thể người dùng tự định nghĩa)
Hãy tham khảo phần bài tập để có cái nhìn tổng quan hơn về việc chuyển kiểu dữ liệu.
isheep(UDS)