Như chúng ta biết PHP không yêu cầu hoặc hỗ trợ định nghĩa kiểu rõ ràng trong khai báo biến. Tuy nhiên, bạn có thể buộc một biến được đánh giá là một loại nhất định bằng cách sử dụng kiểu truyền
Hãy thử ví dụ sau để hiểu cách thức hoạt động của nó
Bạn có thể sử dụng
2 hoặc
3 để chuyển một biến thành số nguyên, sử dụng
4,
5 hoặc
6 để chuyển một biến thành float. Tương tự, bạn có thể sử dụng
7 để truyền một biến thành chuỗi, v.v. Ý nghĩa của "Truyền" là lấy một biến của một loại dữ liệu cụ thể và chuyển đổi nó thành một loại dữ liệu khác. [Ví dụ. Số nguyên nổi]
Như chúng ta đã thảo luận trong chương biến, trong PHP, chúng ta không cần chỉ định kiểu dữ liệu của biến khi khai báo. Trình phân tích cú pháp PHP tự động đặt nó cho chúng tôi. Tuy nhiên, kiểu dữ liệu của biến có thể được chuyển đổi sang kiểu khác tự động hoặc thủ công. Điều này được gọi là đúc kiểu
Có hai loại đúc
Truyền ngầm
Truyền ngầm là điều do PHP thực hiện theo mã của bạn, nhưng bạn không có khả năng tùy chỉnh. Khi chia một số nguyên cho một số nguyên khác, kết quả có thể là số nguyên hoặc số float. Quyết định được đưa ra bởi PHP. Xem ví dụ bên dưới
Ví dụ truyền ẩn PHP
8
9
0
1
2
3
4CastDescription[int] hoặc [integer]Truyền thành một số nguyên. [float] hoặc [double] hoặc [real]Truyền thành float. [bool] hoặc [boolean]Truyền thành boolean. [chuỗi]Truyền thành một chuỗi. [mảng] Truyền tới một mảng. [đối tượng]Truyền tới một đối tượng
Chuyển đổi kiểu dữ liệu là quá trình thay đổi kiểu của biến từ kiểu dữ liệu này sang kiểu dữ liệu khác. PHP cung cấp nhiều kiểu dữ liệu khác nhau và việc chuyển đổi kiểu có thể được thực hiện theo nhiều phương thức khác nhau
Vì PHP là một ngôn ngữ gõ lỏng lẻo, nó cho phép khai báo biến mà không cần chỉ định kiểu dữ liệu của nó. Kiểu dữ liệu của một biến sẽ là kiểu của giá trị dữ liệu được khởi tạo cho nó
Vì vậy, chúng ta có thể thay đổi kiểu dữ liệu của biến PHP bằng cách thay đổi kiểu dữ liệu được khởi tạo. Mã ví dụ sau đây sẽ làm cho nó rõ ràng
PHP cũng hỗ trợ truyền kiểu rõ ràng như các ngôn ngữ lập trình khác. Truyền kiểu PHP tương tự như ngôn ngữ C. PHP cũng cung cấp hàm settype[] để chuyển đổi kiểu dữ liệu của một biến
Trong bài viết này, chúng ta sẽ xem các ví dụ chuyển đổi kiểu cho từng kiểu dữ liệu
PHP Typecasting cho các kiểu dữ liệu khác nhau
Đoạn mã ví dụ sau đây cho thấy cách thực hiện ép kiểu trong PHP để chuyển đổi một kiểu dữ liệu biến. Nó có một biến $count được khởi tạo với một giá trị nguyên
Sau khi khởi tạo, tôi thực hiện ép kiểu với nhiều kiểu dữ liệu khác nhau. Sau mỗi lần truyền kiểu, tôi đã chỉ định đầu ra và loại biến bằng cách sử dụng dòng chú thích PHP
true
* }
*/
$count = [array] $count;
/*
* $count is an object
* Output;
* [stdClass]#1 [1] {
* [0]=>true
* }
*/
$count = [object] $count;
?>
Các hàm PHP để chuyển đổi kiểu dữ liệu
PHP cung cấp các hàm kiểu dữ liệu để lấy hoặc đặt kiểu dữ liệu của một biến hoặc để kiểm tra xem một biến có phải là một kiểu dữ liệu cụ thể hay không. Các hàm đó là gettype[], settype[], is_array[], is_null[] và hơn thế nữa
Đoạn mã sau sử dụng PHP settype[] để thay đổi kiểu dữ liệu của biến và sử dụng gettype[] và in kết quả để biết kiểu dữ liệu nếu biến chứa trước và sau khi chuyển đổi. Tôi đã khởi tạo biến đếm $ dưới dạng chuỗi chuyển đổi nó thành số nguyên bằng cách sử dụng PHP settype[]
Lý do là php. // đầu vào trả về tất cả dữ liệu thô sau tiêu đề HTTP của yêu cầu, bất kể loại nội dung
PHP superglobal $ _POST, chỉ được cho là bọc dữ liệu hoặc
- ứng dụng/x-www-form-urlencoded [loại nội dung tiêu chuẩn cho các bài đăng biểu mẫu đơn giản] hoặc
- multipart/form-data [hầu hết được sử dụng để tải lên tệp]
Điều này là do đây là những loại nội dung duy nhất phải được hỗ trợ bởi tác nhân người dùng. Vì vậy, theo truyền thống, máy chủ và PHP không mong đợi nhận được bất kỳ loại nội dung nào khác [điều đó không có nghĩa là chúng không thể]
Vì vậy, nếu bạn chỉ cần POST một biểu mẫu HTML cũ tốt, thì yêu cầu sẽ giống như thế này
0Nhưng nếu bạn làm việc nhiều với Ajax, thì probaby này cũng bao gồm việc trao đổi dữ liệu phức tạp hơn với các kiểu [chuỗi, int, bool] và cấu trúc [mảng, đối tượng], vì vậy, trong hầu hết các trường hợp, JSON là lựa chọn tốt nhất. Nhưng một yêu cầu với tải trọng JSON sẽ trông giống như thế này
1Nội dung bây giờ sẽ là ứng dụng/json [hoặc ít nhất là không có nội dung nào được đề cập ở trên], vì vậy trình bao bọc $_POST của PHP không biết cách xử lý nội dung đó [chưa]
Dữ liệu vẫn còn đó, bạn không thể truy cập nó thông qua trình bao bọc. Vì vậy, bạn cần tự tìm nạp nó ở định dạng thô với file_get_contents['php. //input'] [miễn là nó không được mã hóa nhiều phần/biểu mẫu dữ liệu]