Hướng dẫn is null and empty string the same in php? - null và chuỗi rỗng có giống nhau trong php không?

Null chỉ là một kiểu dữ liệu khác trong PHP, chỉ có một giá trị [NULL]. Vì PHP là một ngôn ngữ được đánh máy lỏng lẻo, nên nó có thể gây nhầm lẫn cách nó xử lý các giá trị khác nhau. Since PHP is a loosly typed language, it can be confusing how it handles different values.

"", 0, "0", False, array[], Null đều được coi là sai trong PHP.

Null, tuy nhiên, là một loại động vật khác nhau. Sự không tương thích chính với việc sử dụng NULL là bạn không thể biết nếu nó ushet [].main incompatibility with using Null is that you cannot tell if it isset[].

$x = false;
isset[$x]  ->  true
echo $x    ->  ""

$y = null;
isset[$y]  ->  false
echo $y    ->  ""

//$z is not set
isset[$z]  ->  false
echo $z    ->  E_NOTICE

Vì vậy, NULL là lẻ theo nghĩa là nó không tuân theo các quy tắc biến bình thường trong PHP [ít nhất là một số]. Trong hầu hết các trường hợp, nó là tốt.

Khi nói đến các cột cơ sở dữ liệu, NULL của PHP không có chỗ ở đó. Bạn thấy đấy, SQL là ngôn ngữ dựa trên chuỗi. NULL của SQL phải được đại diện bởi NULL mà không có báo giá. You see, SQL is a string based language. SQL's NULL must be represented by NULL with no quotes.

Vì vậy, nếu bạn muốn một trường trống, hãy đặt nó thành ""

INSERT INTO foo SET bar = ""

Nhưng nếu bạn muốn một trường null, hãy đặt nó thành NULL

INSERT INTO foo SET bar = NULL

SỰ KHÁC BIỆT LỚN.

Nhưng nếu bạn cố gắng chèn trực tiếp php null, nó sẽ thêm các ký tự không vào truy vấn, [khiến bạn có lỗi trống hoặc cú pháp, tùy thuộc vào việc bạn đã trích dẫn nó].

Null có tốt hơn chuỗi trống không?

Vì vậy, NULL là tốt hơn. Một chuỗi trống là hữu ích khi dữ liệu đến từ nhiều tài nguyên. NULL được sử dụng khi một số trường là tùy chọn và không rõ dữ liệu.

Bạn sẽ sử dụng các biến trong hầu hết mọi chương trình mà bạn viết bằng PHP. Hầu hết thời gian các biến này có giá trị và chúng tôi thường tạo chúng với giá trị ban đầu. Tuy nhiên, luôn có khả năng một số biến bạn đang sử dụng không được khởi tạo. Điều này có thể dẫn đến một cảnh báo từ PHP về việc sử dụng một biến không xác định.

Có thể có nhiều lý do cho các biến không xác định. Những người phổ biến nhất là bạn thực sự không xác định biến hoặc bạn đã phạm sai lầm khi sử dụng lại ở một nơi khác. Đây chỉ là một lỗi lập trình. Tuy nhiên, một khả năng khác có thể dẫn đến một biến không xác định là nó đã được xác định có điều kiện.

Bạn cũng có thể thấy rằng một biến có giá trị NULL. Điều này cũng có thể xảy ra vì một số lý do. Ví dụ, biến có thể không được khởi tạo với một giá trị. Hoặc giá trị null có thể được trả về từ một hàm để báo hiệu một số loại lỗi.

Định nghĩa

Hãy bắt đầu với một số định nghĩa.

  1. INSERT INTO foo SET bar = ""
    
    0: Bạn có thể sử dụng
    INSERT INTO foo SET bar = ""
    
    0 để xác định xem một biến được khai báo và khác với
    INSERT INTO foo SET bar = ""
    
    5.
  2. INSERT INTO foo SET bar = ""
    
    1: Nó được sử dụng để xác định xem biến có tồn tại hay không và giá trị của biến không đánh giá là
    INSERT INTO foo SET bar = ""
    
    7.
  3. INSERT INTO foo SET bar = ""
    
    2: Hàm này được sử dụng để kiểm tra xem một biến là
    INSERT INTO foo SET bar = ""
    
    5.

PHP
INSERT INTO foo SET bar = ""
0 so với
INSERT INTO foo SET bar = ""
1

Như chúng ta đã thấy từ các định nghĩa,

INSERT INTO foo SET bar = ""
0 sẽ trả về
INSERT INTO foo SET bar = NULL
3 nếu chúng ta đã xác định biến trước đó và đặt giá trị của nó thành một thứ khác ngoài NULL. Điều này có thể bao gồm
INSERT INTO foo SET bar = NULL
5, một chuỗi trống hoặc
INSERT INTO foo SET bar = ""
7. Mặt khác,
INSERT INTO foo SET bar = ""
1 sẽ trả về
INSERT INTO foo SET bar = NULL
3 Bất cứ khi nào giá trị biến được đặt thành một cái gì đó đánh giá thành ________ 17, chúng tôi gọi các giá trị "Falsey" này. Ví dụ về các giá trị sai bao gồm
INSERT INTO foo SET bar = NULL
5, chuỗi trống
1 và chuỗi 
2, một mảng trống, NULL hoặc tất nhiên là boolean 
INSERT INTO foo SET bar = ""
7.

Một điểm tương đồng giữa ____10 và

INSERT INTO foo SET bar = ""
1 là cả hai đều là các cấu trúc ngôn ngữ và do đó không thể được gọi bằng cách sử dụng các hàm biến.

Đoạn mã sau đây sẽ giải thích sự khác biệt giữa hai cái này.

Lưu ý rằng

INSERT INTO foo SET bar = ""
1 có thể được viết bằng hàm
INSERT INTO foo SET bar = ""
0:

Tất nhiên, thường dễ sử dụng chức năng

INSERT INTO foo SET bar = ""
1 tích hợp.

PHP
INSERT INTO foo SET bar = ""
0 so với
INSERT INTO foo SET bar = ""
2

Hàm

INSERT INTO foo SET bar = ""
2 trả về
INSERT INTO foo SET bar = NULL
3 nếu giá trị của một biến đã được đặt rõ ràng thành NULL. Nếu không, nó chỉ đơn giản là trả về
INSERT INTO foo SET bar = ""
7. Mặt khác,
INSERT INTO foo SET bar = ""
0 sẽ trả về
INSERT INTO foo SET bar = NULL
3 miễn là một biến được xác định và giá trị của nó không phải là NULL.

Dưới đây là một ví dụ cơ bản để hiển thị sự khác biệt giữa chúng.

PHP & nbsp; ________ 11 so với
INSERT INTO foo SET bar = ""
2

& Nbsp; ________ 11 & nbsp; hàm trả về & nbsp; ________ 23 & nbsp; nếu giá trị của một biến đánh giá là

INSERT INTO foo SET bar = ""
7. Điều này có thể có nghĩa là chuỗi trống, NULL, số nguyên
INSERT INTO foo SET bar = NULL
5 hoặc một mảng không có phần tử. Mặt khác, ________ 12 & nbsp; sẽ trả về & nbsp; ________ 23 & nbsp; chỉ khi biến có giá trị NULL.

Dưới đây là một ví dụ cơ bản để hiển thị sự khác biệt giữa chúng.

Bài Viết Liên Quan

Chủ Đề