PHP không yêu cầu định nghĩa loại rõ ràng trong khai báo biến. Trong trường hợp này, loại biến được xác định bởi giá trị mà nó lưu trữ. Điều đó có nghĩa là, nếu một chuỗi được gán cho biến $ var, thì $ var là loại chuỗi. Nếu sau đó một giá trị INT được gán cho $ var, nó sẽ thuộc loại int.string is assigned to variable $var, then $var is of type string. If afterwards an int value is assigned to $var, it will be of type int.
PHP có thể cố gắng chuyển đổi loại giá trị thành một giá trị khác một cách tự động trong các bối cảnh nhất định. Các bối cảnh khác nhau tồn tại là:
- Số
- Sợi dây
- Hợp lý
- Tích hợp và chuỗi
- So sánh
- Hàm số
Lưu ý: Khi một giá trị cần được hiểu là một loại khác, chính giá trị không thay đổi loại.: When a value needs to be interpreted as a different type, the value itself does not change types.
Để buộc một biến được đánh giá là một loại nhất định, hãy xem phần về loại đúc loại. Để thay đổi loại biến, hãy xem hàm setType ().settype() function.
Bối cảnh số
Đây là bối cảnh khi sử dụng toán tử số học.
Trong bối cảnh này nếu một trong hai toán hạng là một chiếc phao (hoặc không thể hiểu được là INT), cả hai toán hạng được hiểu là phao và kết quả sẽ là một chiếc phao. Nếu không, các toán hạng sẽ được hiểu là INT, và kết quả cũng sẽ là một int. Kể từ Php 8.0.0, nếu một trong các toán hạng không thể được giải thích, một kiểu mẫu được ném.float (or not interpretable as an int), both operands are interpreted as floats, and the result will be a float. Otherwise, the operands will be interpreted as ints, and the result will also be an int. As of PHP 8.0.0, if one of the operands cannot be
interpreted a TypeError is thrown.
Bối cảnh logic
Đây là bối cảnh khi sử dụng các câu lệnh có điều kiện, toán tử ternary hoặc toán tử logic.
Trong bối cảnh này, giá trị sẽ được hiểu là bool.bool.
Bối cảnh tích phân và chuỗi
Đây là bối cảnh khi sử dụng một toán tử bitwise.
Trong bối cảnh này nếu tất cả các toán hạng là loại chuỗi, kết quả cũng sẽ là một chuỗi. Nếu không, các toán hạng sẽ được hiểu là INT, và kết quả cũng sẽ là một int. Kể từ Php 8.0.0, nếu một trong các toán hạng không thể được giải thích, một kiểu mẫu được ném.string the result will also be a string. Otherwise, the operands will be interpreted as ints, and the result will also be an
int. As of PHP 8.0.0, if one of the operands cannot be interpreted a TypeError is thrown.
Bối cảnh so sánh
Đây là bối cảnh khi sử dụng một toán tử so sánh.
Các chuyển đổi loại xảy ra trong bối cảnh này được giải thích trong việc so sánh với bảng loại khác nhau.
Bối cảnh chức năng
Đây là bối cảnh khi một giá trị được chuyển đến tham số, thuộc tính hoặc được trả về từ một hàm khai báo loại trả về.
Trong bối cảnh này, khi chế độ gõ cưỡng chế được hoạt động (mặc định), chỉ có các giá trị vô hướng có thể được chuyển đổi thành giá trị vô hướng khác. Đối với các loại khai báo đơn giản, hành vi như sau:
- Tuyên bố loại Bool: Giá trị được hiểu là bool. type declaration: value is interpreted as bool.
- Tuyên bố loại int: Giá trị được hiểu là INT nếu chuyển đổi được xác định rõ. I E. Chuỗi là số. type declaration: value is interpreted as int if conversion is well-defined. I.e. the string is numeric.
- Tuyên bố loại float: Giá trị được giải thích là float nếu chuyển đổi được xác định rõ. I E. Chuỗi là số. type declaration: value is interpreted as float if conversion is well-defined.
I.e. the string is numeric.
- Tuyên bố loại chuỗi: Giá trị được hiểu là chuỗi. type declaration: value is interpreted as string.
Nếu loại khai báo loại là một liên minh, hãy xem phần về gõ cưỡng chế với các loại công đoàn.
Cảnh báo
Các chức năng nội bộ tự động ép buộc null
sang các loại vô hướng, hành vi này không được chấp nhận kể từ Php 8.1.0.null
to scalar types, this behaviour is DEPRECATED as of PHP 8.1.0.
Loại đúc
Loại đúc chuyển đổi giá trị thành loại được chọn bằng cách viết loại trong ngoặc đơn trước giá trị để chuyển đổi.
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
Các diễn viên được phép là:
(int)
- đúc vào intint(bool)
- Cast to Boolbool(float)
- đúc để nổifloat(string)
- đúc thành chuỗistring(array)
- đúc đến mảngarray(object)
- đúc đến đối tượngobject(unset)
- Cast to nullNULL
Ghi chú::
(integer)
là một bí danh của dàn diễn viên (int)
.
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
1 là một bí danh của dàn diễn viên (bool)
.
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
3 là một bí danh của dàn diễn viên (string)
.
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
5 và
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
6 là bí danh của dàn diễn viên (float)
. Những diễn viên này không sử dụng tên loại chính tắc và không được khuyến nghị.
Cảnh báo
Các chức năng nội bộ tự động ép buộc null
sang các loại vô hướng, hành vi này không được chấp nhận kể từ Php 8.1.0.
Cảnh báo
Các chức năng nội bộ tự động ép buộc null
sang các loại vô hướng, hành vi này không được chấp nhận kể từ Php 8.1.0.NULL to the variable or call. The (unset)
cast is removed as of PHP 8.0.0.
Loại đúc
Loại đúc chuyển đổi giá trị thành loại được chọn bằng cách viết loại trong ngoặc đơn trước giá trị để chuyển đổi.
Ghi chú::
(integer)
là một bí danh của dàn diễn viên (int)
.
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
1 là một bí danh của dàn diễn viên (bool)
.
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
3 là một bí danh của dàn diễn viên (string)
.
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
5 và
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
6 là bí danh của dàn diễn viên (float)
. Những diễn viên này không sử dụng tên loại chính tắc và không được khuyến nghị.
(int)
6
Bí danh diễn viên
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
6 đã được không dùng nữa kể từ Php 8.0.0.strings and variables to binary
strings:
(int)
7
Diễn viên (unset)
đã được không dùng nữa kể từ Php 7.2.0. Lưu ý rằng diễn viên (unset)
giống như gán giá trị null cho biến hoặc cuộc gọi. Diễn viên (unset)
được loại bỏ là từ Php 8.0.0.: Instead of casting a variable to a string, it is also possible to enclose the variable in double quotes.
(int)
8
(int)
9
(bool)
0
Thận trọng
- Tiền tố
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
3 và (int)
3 tồn tại để hỗ trợ chuyển tiếp. Hiện tại
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
3 và (string)
giống hệt nhau, tuy nhiên điều này có thể thay đổi và không nên dựa vào. - Không gian trắng bị bỏ qua trong các dấu ngoặc đơn của một diễn viên. Do đó, sau đây là hai diễn viên tương đương:
- Đúc chuỗi và biến theo nghĩa đen cho chuỗi nhị phân:
- Lưu ý: Thay vì đúc một biến vào một chuỗi, cũng có thể gửi lại biến trong trích dẫn đôi.
- Nó có thể không rõ ràng chính xác những gì sẽ xảy ra khi đúc giữa một số loại nhất định. Để biết thêm thông tin, hãy xem các phần sau:
- Chuyển đổi thành Boolean
- Chuyển đổi sang số nguyên
- Chuyển đổi thành Float
- Chuyển đổi thành chuỗi
Chuyển đổi thành mảng: Because PHP supports indexing into
strings via offsets using the same syntax as array indexing, the following example holds true for all PHP versions:
(bool)
1
Xem phần có tiêu đề Truy cập chuỗi theo ký tự để biết thêm thông tin.
Raja ¶ ¶
17 năm trước
(bool)
2
(bool)
3
(bool)
4
Ẩn danh ¶ ¶
1 năm trước
(bool)
5
Fardelian ¶ ¶
9 năm trước
(bool)
6
(bool)
7
(bool)
8
(bool)
9 Ẩn danh ¶ ¶
1 năm trước
(float)
0
(float)
1
(float)
2
(float)
3
(bool)
4 Fardelian ¶ ¶
9 năm trước
(float)
5
(float)
6
(bool)
4
3 năm trước ¶
Yury tại Krasnu dot ru ¶
(float)
8
(float)
9
(bool)
4 19 năm trước
¶
rmirabelle ¶
(string)
1
(float)
2
(string)
3
(string)
4
(bool)
4Ẩn danh ¶ ¶
1 năm trước
(string)
6
Fardelian ¶ ¶
9 năm trước
(string)
7
3 năm trước ¶
Yury tại Krasnu dot ru ¶
(string)
8
(string)
9
(bool)
4 19 năm trước ¶
1 năm trước
(array)
1
(array)
2
(array)
3
(array)
4
(array)
5
(array)
6
(array)
7
(bool)
4 Fardelian ¶ ¶
Yury tại Krasnu dot ru ¶
(array)
9
(object)
0
(object)
1
(object)
2
(object)
3 19 năm trước ¶
rmirabelle ¶
(object)
4
(object)
5
(bool)
4
Ẩn danh ¶ ¶
9 năm trước
(object)
7
(object)
8
(bool)
4 3 năm trước
¶
rmirabelle ¶
(unset)
0
(object)
1
(unset)
2
(unset)
3 12 năm trước ¶
Yury tại Krasnu dot ru ¶
(unset)
4
19 năm trước ¶
rmirabelle ¶
(unset)
5
(unset)
6
(object)
1
(unset)
8
(unset)
9 12 năm trước ¶
phép màu ở 1oo-phần trăm dot de ¶
(integer)
0
Ẩn danh ¶ ¶
17 năm trước
(integer)
1
(integer)
2
(integer)
3
(integer)
4
(bool)
4 Ẩn danh ¶ ¶
rmirabelle ¶
(integer)
6
(integer)
7
(integer)
8
(integer)
9 12 năm trước ¶
17 năm trước
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
00
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
01
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
02
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
03
(bool)
4 phép màu ở 1oo-phần trăm dot de ¶ ¶
phép màu ở 1oo-phần trăm dot de ¶
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
05
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
06
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
07
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
08 16 năm trước ¶
20 năm trước
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
09
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
10
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
11
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
12
(bool)
4 IEEE tại Remove dot bk dot ru ¶ ¶
10 năm trước
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
14
Kuzawinski Dot Marcin tại Nospam Dot Gmail Dot Com ¶ ¶
phép màu ở 1oo-phần trăm dot de ¶
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
15
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
16
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
17
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
18
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
19 16 năm trước ¶
phép màu ở 1oo-phần trăm dot de ¶
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
20
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
21
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
22
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
23
(bool)
4 16 năm trước ¶
10 năm trước
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
25
Kuzawinski Dot Marcin tại Nospam Dot Gmail Dot Com ¶ ¶
20 năm trước
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
26
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
27
(bool)
4 IEEE tại Remove dot bk dot ru ¶ ¶
Yury tại Krasnu dot ru ¶
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
29
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
30
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
31
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
32
(bool)
4
19 năm trước ¶
9 năm trước
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
34
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
35
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
36
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
37
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
38
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
39
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
40
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
41
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
42
(bool)
4 3 năm trước ¶
20 năm trước
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
44
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
45
(bool)
4 IEEE tại Remove dot bk dot ru ¶ ¶
phép màu ở 1oo-phần trăm dot de ¶
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
47
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
48
(bool)
4 16 năm trước ¶
10 năm trước
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
50
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
51
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
52
(bool)
4 Kuzawinski Dot Marcin tại Nospam Dot Gmail Dot Com ¶ ¶
rmirabelle ¶
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
54
12 năm trước ¶
phép màu ở 1oo-phần trăm dot de ¶
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
55
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
56
<?php
$foo = 10; // $foo is an integer
$bar = (bool) $foo; // $bar is a boolean
?>
57
(bool)
4Nhiều người tung hứng phương Tây cũng thực hành các hình thức thao túng đối tượng khác, chẳng hạn như diabolo, que quỷ, thao tác hộp xì gà, quay lửa, tung hứng tiếp xúc, thao túng mũ, POI, nhân viên quay, các thủ thuật cân bằng, kỹ năng xiếc nói chung.diabolo, devil sticks, cigar box manipulation, fire-spinning, contact juggling, hat manipulation, poi, staff-spinning, balancing tricks, bar flair and general circus skills.
PHP không hỗ trợ kiểu dữ liệu để khai báo biến. Loại biến được thay đổi tự động dựa trên giá trị được gán và nó được gọi là loại tung hứng loại.The type of the variable is changed automatically based on the assigned value and it is called type juggling.
Typecasting trong PHP: Ý nghĩa của việc đúc loại là sử dụng giá trị của một biến với loại dữ liệu khác nhau. Trong các từ khác Typecasting là một cách để sử dụng một biến kiểu dữ liệu vào loại dữ liệu khác nhau.
Loại tung hứng loại (còn được gọi là loại nhầm lẫn loại) là một loại lỗ hổng trong đó một đối tượng được khởi tạo hoặc truy cập dưới dạng loại không chính xác, cho phép kẻ tấn công có khả năng bỏ qua xác thực hoặc làm suy yếu loại an toàn của ứng dụng, có thể dẫn đến thực thi mã tùy ý.
Trong PHP, các biến của các loại dữ liệu khác nhau có thể được so sánh bằng cách sử dụng toán tử so sánh lỏng lẻo là hai dấu hiệu bằng nhau (==).Nếu hai toán hạng của các loại khác nhau được so sánh bằng cách sử dụng so sánh lỏng lẻo thì có một nỗ lực để chuyển đổi một hoặc cả hai toán hạng và sau đó so sánh chúng.using the loose comparison operator which is two equal signs (==). If two operands of different types are compared using loose comparison then there is an attempt to convert one or both of the operands and then compare them.