Hướng dẫn what is type juggling in php - tung hứng kiểu trong php là gì

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)4

Loại tung hứng là gì?

Nhiề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.

Loại tung hứng trong PHP MCQ là gì?

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.

Loại đúc trong PHP là gì?

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 lỗ hổng Juggling là gì?

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 ý.

Làm thế nào PHP so sánh dữ liệu của các loại khác nhau?

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.

Những loại dữ liệu khác nhau có sẵn trong PHP?

PHP hỗ trợ các loại dữ liệu sau:..
String..
Integer..
Float (số điểm nổi - còn được gọi là gấp đôi).
Boolean..
Array..
Object..
Resource..