NULL đúng hay sai PHP?

Các biến có thể lưu trữ các loại dữ liệu khác nhau. Trong PHP, PHP tự động chọn kiểu dữ liệu phù hợp cho biến

Thông thường, chúng ta cần lưu trữ các loại dữ liệu khác nhau trong các biến để thực hiện các tác vụ khác nhau

Có một số kiểu dữ liệu trong PHP

Hàm var_dump()

Hàm var_dump() kết xuất thông tin về một biến. Tầm quan trọng của hàm này là, nó xuất ra kiểu dữ liệu của biến với giá trị của nó. Nó cũng là một hàm đầu ra như echo()

Chúng tôi luôn chạy qua những điều này và có thể dễ dàng hiểu điều gì sẽ xảy ra khi chúng tôi chuyển cho chúng một giá trị

function foo(): null {}
function bar(): false {}
4 hoặc
function foo(): null {}
function bar(): false {}
5. Tuy nhiên, điều gì sẽ xảy ra khi điều kiện của câu lệnh
function foo(): null {}
function bar(): false {}
6 là một đối tượng, một chuỗi hoặc một số?

Sự thật/Sai là gì?

Các ngôn ngữ được gõ lỏng lẻo như PHP cho phép chúng tôi sử dụng bất kỳ loại biến nào như thể đó là một giá trị boolean trong các câu lệnh

function foo(): null {}
function bar(): false {}
6 của chúng tôi

$valueString = 'hello';

if ($valueString) {
    doSomething();
}

Khi PHP cần đánh giá câu lệnh

function foo(): null {}
function bar(): false {}
6, nó sẽ chuyển đổi biến của chúng ta thành thứ gì đó có thể biểu diễn dưới dạng boolean. Lý tưởng nhất, đây sẽ là một
function foo(): null {}
function bar(): false {}
4 hoặc
function foo(): null {}
function bar(): false {}
5 nhưng trong PHP, nó sẽ chuyển đổi bất kỳ biến nào thành một thứ mà nó có thể biểu thị dưới dạng một trong hai giá trị đó. Đây là nơi “sự thật” và “sự giả dối” xuất hiện. Một biến không phải là
function foo(): null {}
function bar(): false {}
4 hoặc
function foo(): null {}
function bar(): false {}
5 có thể là true hoặc false

Vài ví dụ

Thật may mắn cho chúng tôi, có một sự nhất quán logic với cách kiểu PHP sắp xếp các biến của chúng tôi thành true và false. Phần lớn logic là bất cứ thứ gì “trống rỗng” đều là giả và bất cứ thứ gì có giá trị đều là thật

PHP là ngôn ngữ được gõ yếu và các biến có thể thuộc bất kỳ loại nào. Mục đầu tiên đáng được đề cập là chuỗi NULL trong ví dụ trên. Biến NULL có nghĩa đen là "không có giá trị". Nói rằng biến có giá trị NULL cũng giống như nói rằng biến không có giá trị

Các biến có giá trị thường đại diện cho số, chuỗi hoặc tài nguyên. Các biến đại diện cho số được biểu thị bằng chuỗi chữ số, có hoặc không có dấu thập phân. Các số cũng có thể được viết bằng ký hiệu kỹ thuật trong đó số 13500 sẽ được viết là 1. 35e4, ký hiệu bát phân hoặc thập lục phân.  

Số 0 ở đầu có nghĩa là số được viết bằng ký hiệu bát phân, trong khi tiền tố "0x" được sử dụng cho ký hiệu thập lục phân. Ví dụ: biểu thức $a=0100;

Giá trị Boolean

Ngoài các con số, hầu hết các ngôn ngữ lập trình đều nhận ra các giá trị Boolean và phân biệt giữa các câu lệnh TRUE và FALSE. Các quy ước trong PHP rất giống với các quy ước trong Perl hoặc C. Danh sách sau đây hiển thị các giá trị FALSE

�         0
�         "0"
�         0. 0
�         NULL
�         mảng()
�         "" (chuỗi trống)
�         The keyword "FALSE"

Mọi giá trị không phải FALSE đều là TRUE. Các toán tử logic thông thường được áp dụng và có quyền ưu tiên thông thường giống với các định nghĩa trong các ngôn ngữ khác. Điều đáng chú ý là trái ngược với SQL áp dụng logic bậc ba trong đó giá trị NULL không phải là TRUE cũng không phải FALSE, PHP vẫn TRUE với logic nhị phân cổ điển

Xem kho mã để biết các tập lệnh hoàn chỉnh

Đây là một đoạn trích từ cuốn sách Easy Oracle PHP. Bạn có thể nhận được nó với giá hơn 30% bằng cách mua trực tiếp từ nhà xuất bản và nhận các tập lệnh HTML-DB ngay lập tức từ kho mã

PHP8. 0 đã thêm hỗ trợ cho Các loại kết hợp, giúp có thể khai báo một loại dưới dạng kết hợp của hai hoặc nhiều loại. Nó cho phép

function foo(): null {}
function bar(): false {}
5 và
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 là các loại có thể cho Loại Liên minh, nhưng không cho phép sử dụng chúng làm loại độc lập

Trước PHP 8. 2, chỉ có thể sử dụng

Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 và
function foo(): null {}
function bar(): false {}
5 như một phần của Loại liên kết

function foo(): string|null {}
function strpos(): int|false {}

Cố gắng sử dụng loại

Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 hoặc
function foo(): null {}
function bar(): false {}
5 làm loại độc lập (i. e mà không phải là một phần của loại liên kết) dẫn đến lỗi nghiêm trọng trong thời gian biên dịch trong các phiên bản PHP PHP 8. 0 và PHP8. 1

function foo(): null {}
function bar(): false {}
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...

Trong PHP8. 2 trở lên, cho phép sử dụng

Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 và
function foo(): null {}
function bar(): false {}
5 làm loại độc lập. Đoạn mã dẫn đến lỗi nghiêm trọng ở trên không còn đưa ra bất kỳ lỗi nào trong PHP 8. 2 trở lên. Điều này làm cho hệ thống kiểu của PHP trở nên biểu cảm và đầy đủ hơn để có thể khai báo chính xác các kiểu trả về, tham số và thuộc tính

Hơn nữa, PHP 8. 2 trở lên cho phép sử dụng Loại kết hợp với

function foo(): null {}
function bar(): false {}
8, điều này dẫn đến lỗi trong các phiên bản PHP cũ hơn

Các hàm và phương thức PHP phải sử dụng nhận xét PHPDoc để cung cấp thông tin loại chính xác có thể trực tiếp khai báo loại trong chính hàm đó

  class AnonUser extends User {
-     /**
-      * @return false
-      */
-     public function isAdmin(): bool {
+     public function isAdmin(): false {
          return false;
      }
  }

Lưu ý rằng các hàm được khai báo với kiểu trả về

Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 phải rõ ràng là
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
2, nếu không lệnh gọi hàm dẫn đến ngoại lệ
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
3. Các hàm không trả về giá trị một cách rõ ràng, do hoàn toàn không có câu lệnh
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 hoặc bằng cách bỏ qua giá trị trả về (
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
5) có thể tiếp tục sử dụng loại
function foo(): null {}
function bar(): false {}
9 làm loại trả về

Ví dụ sau đưa ra một ngoại lệ

Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
3 vì lẽ ra nó phải được khai báo với kiểu
function foo(): null {}
function bar(): false {}
9 thay vì kiểu trả về
Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4

function foo(): string|null {}
function strpos(): int|false {}
3____14

Trừ khi

Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 là kiểu trả về, khai báo hàm với kiểu trả về
function foo(): null {}
function bar(): false {}
9 hoặc
  class AnonUser extends User {
-     /**
-      * @return false
-      */
-     public function isAdmin(): bool {
+     public function isAdmin(): false {
          return false;
      }
  }
2 là cách tiếp cận phù hợp hơn

Nếu một loại được khai báo là

Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4, thì nó không thể được đánh dấu là "không có giá trị" bằng cú pháp
  class AnonUser extends User {
-     /**
-      * @return false
-      */
-     public function isAdmin(): bool {
+     public function isAdmin(): false {
          return false;
      }
  }
5, vì nó dẫn đến một khai báo loại dư thừa. PHP ném lỗi vào thời gian biên dịch nếu nó gặp lỗi

function foo(): string|null {}
function strpos(): int|false {}
8
function foo(): string|null {}
function strpos(): int|false {}
9

Thay đổi liên quan

  • PHP8. 0. Các loại liên minh
  • PHP8. 0. Cảnh báo chức năng nội bộ hiện ném ngoại lệ
    Fatal error: Null can not be used as a standalone type in .. on line ...
    Fatal error: False can not be used as a standalone type in .. on line ...
    3 và
      class AnonUser extends User {
    -     /**
    -      * @return false
    -      */
    -     public function isAdmin(): bool {
    +     public function isAdmin(): false {
              return false;
          }
      }
    7
  • PHP8. 1. Các loại giao lộ
  • PHP8. 1. loại
      class AnonUser extends User {
    -     /**
    -      * @return false
    -      */
    -     public function isAdmin(): bool {
    +     public function isAdmin(): false {
              return false;
          }
      }
    2
  • PHP8. 2.
      class AnonUser extends User {
    -     /**
    -      * @return false
    -      */
    -     public function isAdmin(): bool {
    +     public function isAdmin(): false {
              return false;
          }
      }
    9 loại

Tác động tương thích ngược

Trước PHP 8. 2, không được phép sử dụng

Fatal error: Null can not be used as a standalone type in .. on line ...
Fatal error: False can not be used as a standalone type in .. on line ...
4 và
function foo(): null {}
function bar(): false {}
5 làm loại độc lập. PHP8. 2 trở lên cho phép chúng dưới dạng các loại độc lập và điều này sẽ không gây ra bất kỳ sự cố tương thích nào trong các phiên bản PHP cũ hơn

NULL có bị coi là sai trong PHP không?

NULL về cơ bản có nghĩa là một biến không có giá trị được gán cho nó; . Lưu câu trả lời này. Hiển thị hoạt động trên bài đăng này. Null là không có gì , Sai là một chút và 0 là (có thể) 32 bit.

NULL và 0 giống nhau đúng hay sai?

Câu trả lời khá đơn giản. a NULL nghĩa là không có giá trị, chúng tôi đang xem một ô trống/trống và 0 nghĩa là chính giá trị đó bằng 0 . Xem xét có sự khác biệt giữa NULL và 0, do đó, cách Tableau xử lý hai giá trị này cũng khác nhau.

NULL có phải là một giá trị trong PHP không?

NULL ¶ Kiểu null là kiểu đơn vị của PHP, i. e. nó chỉ có một giá trị. vô . Các biến không xác định và không đặt () sẽ phân giải thành giá trị null.

0 là sai hay đúng trong PHP?

Khi chuyển đổi thành bool, các giá trị sau được coi là sai. boolean false chính nó. số nguyên 0 (không) số float 0. 0 và -0. 0 (không)