Kiểu dữ liệu hỗn hợp PHP

Loại

int[1]

Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
Stack trace:
#0 -[9]: array_baz[1]
#1 {main}
  thrown in - on line 2
6 đại diện cho bất kỳ giá trị nào trong Hack

Ví dụ, chức năng sau có thể được thông qua bất cứ điều gì

function takes_anything[mixed $m]: void {}

function call_it[]: void {
  takes_anything["foo"];
  takes_anything[42];
  takes_anything[new MyClass[]];
}

int[1]

Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
Stack trace:
#0 -[9]: array_baz[1]
#1 {main}
  thrown in - on line 2
6 tương đương với
int[1]

Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
Stack trace:
#0 -[9]: array_baz[1]
#1 {main}
  thrown in - on line 2
8.
int[1]

Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
Stack trace:
#0 -[9]: array_baz[1]
#1 {main}
  thrown in - on line 2
9 đại diện cho bất kỳ giá trị nào ngoại trừ
int[1]

Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
Stack trace:
#0 -[9]: array_baz[1]
#1 {main}
  thrown in - on line 2
0

Chúng tôi khuyên bạn nên tránh sử dụng

int[1]

Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
Stack trace:
#0 -[9]: array_baz[1]
#1 {main}
  thrown in - on line 2
6 bất cứ khi nào bạn có thể sử dụng một loại cụ thể hơn

Tham gia bản tin của tôi

Kiểu hỗn hợp trong PHP 8 là kiểu kết hợp tích hợp mới. Loại hỗn hợp tương đương với mảng. bool. gọi được. int. trôi nổi. Trộn loại không hoàn toàn giống như loại bỏ hoàn toàn loại

Điều đó có nghĩa là, lập trình viên chỉ quên viết nó

Đôi khi lập trình viên muốn bỏ qua một số loại cụ thể để giữ khả năng tương thích với phiên bản cũ hơn

Loại hỗn hợp trong PHP 8 có thể lấy bất kỳ loại thuộc tính/trả về/tham số nào. Chúng ta có thể nói rằng nó bao gồm null, có thể gọi được, tài nguyên, tất cả các đối tượng lớp hoặc tất cả các loại vô hướng trong PHP. Loại hỗn hợp tương đương với loại Union

int|float|bool|string|null|array|object|callable|resource

Thí dụ. Loại hỗn hợp trong PHP 8

  • Trong PHP 8, Hỗn hợp là một loại giả/ảo. Nó đại diện cho một số loại mà PHP có thể xử lý, điều đó có nghĩa là chúng ta không thể chuyển một biến thành hỗn hợp vì nó không tạo ra bất kỳ logic nào

    Các khai báo kiểu có thể được thêm vào các đối số hàm, giá trị trả về và kể từ PHP 7. 4. 0, thuộc tính lớp. Họ đảm bảo rằng giá trị thuộc loại được chỉ định tại thời điểm gọi, nếu không thì TypeError sẽ bị ném

    Mọi loại đơn lẻ mà PHP hỗ trợ, ngoại trừ tài nguyên đều có thể được sử dụng trong khai báo loại đất của người dùng. Trang này chứa nhật ký thay đổi về tính khả dụng của các loại khác nhau và tài liệu về việc sử dụng chúng trong khai báo loại

    Ghi chú

    Khi một lớp triển khai một phương thức giao diện hoặc triển khai lại một phương thức đã được định nghĩa bởi lớp cha, thì nó phải tương thích với định nghĩa đã nói ở trên. Một phương pháp là tương thích nếu nó tuân theo các quy tắc phương sai

    Nhật ký thay đổi

    Phiên bảnMô tả8. 2. 0Hỗ trợ cho các loại DNF đã được thêm vào. 8. 2. 0Hỗ trợ cho kiểu chữ đúng đã được thêm vào. 8. 2. 0Các loại null và false hiện có thể được sử dụng độc lập. 8. 1. 0Hỗ trợ cho các loại giao lộ đã được thêm vào. 8. 1. 0Trở về theo tham chiếu từ hàm void hiện không được dùng nữa. 8. 1. 0Hỗ trợ cho loại chỉ trả lại chưa bao giờ được thêm vào. 8. 0. 0Hỗ trợ hỗn hợp đã được thêm vào. 8. 0. 0Hỗ trợ cho kiểu tĩnh chỉ trả lại đã được thêm vào. 8. 0. 0Hỗ trợ cho các loại công đoàn đã được thêm vào. 7. 2. 0Hỗ trợ cho đối tượng đã được thêm vào. 7. 1. 0Hỗ trợ cho iterable đã được thêm vào. 7. 1. 0Hỗ trợ cho khoảng trống đã được thêm vào. 7. 1. 0Hỗ trợ cho các loại nullable đã được thêm vào

    Các loại cơ sở Ghi chú sử dụng

    Các loại cơ sở có hành vi đơn giản với một số cảnh báo nhỏ được mô tả trong phần này

    các loại vô hướng

    Cảnh báo

    Bí danh tên cho các loại vô hướng [bool, int, float, string] không được hỗ trợ. Thay vào đó, chúng được coi là tên lớp hoặc giao diện. Ví dụ: sử dụng

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    2 làm khai báo kiểu sẽ yêu cầu giá trị phải là lớp hoặc giao diện
    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    3
    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    2, thay vì kiểu bool

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    5

    Đầu ra của ví dụ trên trong PHP 8

    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    

    khoảng trống

    Ghi chú

    Trả về bằng tham chiếu từ hàm void không được dùng kể từ PHP 8. 1. 0, bởi vì một chức năng như vậy là mâu thuẫn. Trước đây, nó đã phát ra

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    0 sau đây khi được gọi.
    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    1

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    2

    các loại có thể gọi

    Loại này không thể được sử dụng làm khai báo loại thuộc tính lớp

    Ghi chú. Không thể chỉ định chữ ký của chức năng

    Loại khai báo trên các tham số truyền qua tham chiếu

    Nếu tham số chuyển qua tham chiếu có khai báo kiểu, thì kiểu của biến chỉ được kiểm tra khi nhập hàm, khi bắt đầu gọi, chứ không phải khi hàm trả về. Điều này có nghĩa là một hàm có thể thay đổi kiểu tham chiếu của biến

    Ví dụ #1 Tham số truyền qua tham chiếu đã nhập

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    3

    Ví dụ trên sẽ xuất ra một cái gì đó tương tự như

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    

    Loại tổng hợp Ghi chú sử dụng

    Các khai báo kiểu tổng hợp phải tuân theo một số hạn chế và sẽ thực hiện kiểm tra dự phòng tại thời điểm biên dịch để ngăn các lỗi đơn giản

    thận trọng

    Trước PHP 8. 2. 0 và việc giới thiệu các loại DNF, không thể kết hợp các loại giao nhau với các loại liên kết

    các loại công đoàn

    Cảnh báo

    Không thể kết hợp hai loại chữ

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    4 và
    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    5 với nhau trong một loại kết hợp. Sử dụng bool thay thế

    thận trọng

    Trước PHP 8. 2. 0, vì

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    4 và null không thể được sử dụng làm loại độc lập, loại hợp nhất chỉ bao gồm các loại này không được phép. Điều này bao gồm các loại sau.
    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    4,
    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    8 và
    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    9

    Nullable loại cú pháp đường

    Một khai báo loại cơ sở duy nhất có thể được đánh dấu là vô giá trị bằng cách đặt trước loại có dấu chấm hỏi [

    int|float|bool|string|null|array|object|callable|resource
    40]. Do đó,
    int|float|bool|string|null|array|object|callable|resource
    41 và
    int|float|bool|string|null|array|object|callable|resource
    42 giống hệt nhau

    Ghi chú. Cú pháp này được hỗ trợ kể từ PHP 7. 1. 0 và có trước hỗ trợ các kiểu kết hợp tổng quát

    Ghi chú

    Cũng có thể đạt được các đối số nullable bằng cách đặt giá trị mặc định

    int|float|bool|string|null|array|object|callable|resource
    43. Điều này không được khuyến nghị vì nếu giá trị mặc định bị thay đổi trong một lớp con, một vi phạm tương thích kiểu sẽ được nêu ra vì kiểu null sẽ cần được thêm vào khai báo kiểu

    Ví dụ #2 Cách cũ để biến các đối số thành null

    int|float|bool|string|null|array|object|callable|resource
    44

    int|float|bool|string|null|array|object|callable|resource
    45

    int|float|bool|string|null|array|object|callable|resource
    46

    Ví dụ trên sẽ xuất ra

    Các loại trùng lặp và dư thừa

    Để bắt các lỗi đơn giản trong khai báo kiểu tổng hợp, các kiểu dư thừa có thể được phát hiện mà không thực hiện tải lớp sẽ dẫn đến lỗi thời gian biên dịch. Điêu nay bao gôm

    • Mỗi loại giải quyết tên chỉ có thể xảy ra một lần. Các loại như
      int|float|bool|string|null|array|object|callable|resource
      47 hoặc
      int|float|bool|string|null|array|object|callable|resource
      48 dẫn đến lỗi
    • Sử dụng kết quả hỗn hợp trong một lỗi
    • Đối với các loại công đoàn
      • Nếu bool được sử dụng, false hoặc true không thể được sử dụng bổ sung
      • Nếu đối tượng được sử dụng, các loại lớp không thể được sử dụng bổ sung
      • Nếu iterable được sử dụng, mảng và Traversable không thể được sử dụng bổ sung
    • Đối với các loại giao lộ
      • Sử dụng loại không phải là loại lớp dẫn đến lỗi
      • Sử dụng bản thân, cha mẹ hoặc tĩnh dẫn đến lỗi
    • Đối với các loại DNF
      • Nếu một loại chung chung hơn được sử dụng, thì loại hạn chế hơn sẽ không cần thiết
      • Sử dụng hai loại giao lộ giống hệt nhau

    Ghi chú. Điều này không đảm bảo rằng loại là "tối thiểu", vì làm như vậy sẽ yêu cầu tải tất cả các loại lớp đã sử dụng

    Ví dụ: nếu

    int|float|bool|string|null|array|object|callable|resource
    49 và
    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    40 là bí danh của lớp, thì
    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    41 vẫn là một loại liên kết hợp pháp, mặc dù nó có thể được rút gọn thành
    int|float|bool|string|null|array|object|callable|resource
    49 hoặc
    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    40. Tương tự, nếu lớp
    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    44, thì
    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    41 cũng là một loại liên minh hợp pháp, mặc dù nó có thể được giảm xuống chỉ còn
    int|float|bool|string|null|array|object|callable|resource
    49

    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    47

    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    48

    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    49

    ví dụ

    Ví dụ #3 Khai báo kiểu lớp cơ bản

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    40

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    41

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    42

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    43

    Đầu ra của ví dụ trên trong PHP 8

    int|float|bool|string|null|array|object|callable|resource
    4

    Ví dụ #4 Khai báo kiểu giao diện cơ bản

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    44

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    45

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    46

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    47

    Đầu ra của ví dụ trên trong PHP 8

    Warning: "boolean" will be interpreted as a class name. Did you mean "bool"? Write "\boolean" to suppress this warning in /in/9YrUX on line 2
    
    Fatal error: Uncaught TypeError: test[]: Argument #1 [$param] must be of type boolean, bool given, called in - on line 3 and defined in -:2
    Stack trace:
    #0 -[3]: test[true]
    #1 {main}
      thrown in - on line 2
    
    4

    Ví dụ #5 Khai báo kiểu trả về cơ bản

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    48

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    49

    Ví dụ trên sẽ xuất ra

    Ví dụ #6 Trả về một đối tượng

    int|float|bool|string|null|array|object|callable|resource
    44

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    71

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    72

    Ví dụ trên sẽ xuất ra

    Ví dụ #7 Khai báo kiểu đối số nullable

    int|float|bool|string|null|array|object|callable|resource
    44

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    74

    int|float|bool|string|null|array|object|callable|resource
    46

    Ví dụ trên sẽ xuất ra

    Ví dụ #8 Khai báo kiểu trả về Nullable

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    76

    đánh máy nghiêm ngặt

    Theo mặc định, PHP sẽ ép buộc các giá trị của loại sai vào khai báo loại vô hướng dự kiến ​​nếu có thể. Ví dụ: một hàm được cung cấp một int cho một tham số mong đợi một chuỗi sẽ nhận được một biến kiểu chuỗi

    Có thể bật chế độ nghiêm ngặt trên cơ sở từng tệp. Ở chế độ nghiêm ngặt, chỉ một giá trị tương ứng chính xác với khai báo kiểu mới được chấp nhận, nếu không TypeError sẽ bị ném. Ngoại lệ duy nhất cho quy tắc này là một giá trị int sẽ vượt qua một khai báo kiểu float

    Cảnh báo

    Các lời gọi hàm từ bên trong các hàm bên trong sẽ không bị ảnh hưởng bởi khai báo

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    77

    Để kích hoạt chế độ nghiêm ngặt, câu lệnh

    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    78 được sử dụng với khai báo
    int[1]
    
    Fatal error: Uncaught TypeError: array_baz[]: Argument #1 [$param] must be of type array, int given, called in - on line 9 and defined in -:2
    Stack trace:
    #0 -[9]: array_baz[1]
    #1 {main}
      thrown in - on line 2
    
    77

    Ghi chú

    Nhập nghiêm ngặt áp dụng cho các lệnh gọi hàm được thực hiện từ bên trong tệp có bật tính năng nhập nghiêm ngặt, không áp dụng cho các hàm được khai báo trong tệp đó. Nếu một tệp không được kích hoạt kiểu gõ nghiêm ngặt thực hiện lệnh gọi đến một hàm được xác định trong tệp có kiểu gõ nghiêm ngặt, tùy chọn của người gọi [gõ cưỡng chế] sẽ được tôn trọng và giá trị sẽ bị ép buộc

    Bạn có thể khai báo kiểu biến trong PHP không?

    Ghi chú. Khi bạn gán một giá trị văn bản cho một biến, hãy đặt dấu ngoặc kép xung quanh giá trị. Ghi chú. Không giống như các ngôn ngữ lập trình khác, PHP không có lệnh khai báo biến . Nó được tạo ngay khi bạn gán giá trị cho nó lần đầu tiên. Hãy nghĩ về các biến như các thùng chứa để lưu trữ dữ liệu.

    Các kiểu kết hợp trong PHP là gì?

    “Kiểu hợp nhất” chấp nhận giá trị của nhiều loại dữ liệu khác nhau, thay vì một loại duy nhất . Nếu ngôn ngữ lập trình hỗ trợ các kiểu kết hợp, bạn có thể khai báo một biến theo nhiều kiểu. Ví dụ: có thể có một hàm có thể chấp nhận biến kiểu “string” hoặc “float” làm tham số.

    PHP có loại an toàn không?

    Các kiểu dữ liệu trong PHP là gì?

    PHP hỗ trợ các kiểu dữ liệu sau. .
    Sợi dây
    số nguyên
    Float [số dấu phẩy động - còn gọi là double]
    Boolean
    Mảng
    Sự vật
    Nguồn

Chủ Đề