Tôi có một câu hỏi liên quan đến NULL
trong PHP:
$a = '';
if[$a == NULL] {
echo 'is null';
}
Tại sao tôi thấy là null khi $a
là một chuỗi trống? Đó có phải là một lỗi?is null when $a
is an empty string? Is that a bug?
a_hardin
4,8354 Huy hiệu vàng31 Huy hiệu bạc40 Huy hiệu đồng4 gold badges31 silver badges40 bronze badges
Đã hỏi ngày 23 tháng 11 năm 2011 lúc 1:44Nov 23, 2011 at 1:44
0
Những gì bạn đang tìm kiếm là:
if[$variable === NULL] {...}
Lưu ý ===
. Khi sử dụng
if[$variable === NULL] {...}
0, như bạn đã làm, PHP đối xử với null, false, 0, chuỗi trống và các mảng trống như bằng nhau.When use
if[$variable === NULL] {...}
0, as you did, PHP treats NULL, false, 0, the empty string, and empty arrays as equal.
Kkurian
3.7843 huy hiệu vàng30 Huy hiệu bạc48 Huy hiệu đồng3 gold badges30 silver badges48 bronze badges
Đã trả lời ngày 23 tháng 11 năm 2011 lúc 1:47Nov 23, 2011 at 1:47
GodwingodwinGodwin
9,5295 Huy hiệu vàng38 Huy hiệu bạc57 Huy hiệu đồng5 gold badges38 silver badges57 bronze badges
8
Như được hiển thị trong bảng sau,
if[$variable === NULL] {...}
1 tương đương với if[$variable === NULL] {...}
2 và if[$variable === NULL] {...}
3 có cùng chức năng của if[$variable === NULL] {...}
4. Bảng cũng cho thấy một số giá trị khó khăn liên quan đến so sánh if[$variable === NULL] {...}
5. [ϕ biểu thị một biến không được chỉ định.] empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
Đã trả lời ngày 25 tháng 3 năm 2013 lúc 4:18Mar 25, 2013 at 4:18
Nerdhandsome đẹp traiHandsome Nerd
16.3k20 Huy hiệu vàng93 Huy hiệu bạc168 Huy hiệu đồng20 gold badges93 silver badges168 bronze badges
6
Kiểm tra
if[$variable === NULL] {...}
0 vs ===
if[$variable === NULL] {...}
8 sẽ trả về true if[$variable === NULL] {...}
9 sẽ trả về true empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
0 sẽ trả về đúngif[$variable === NULL] {...}
9 would return true empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
0 would return truenhưng trái lại
empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
1 sẽ trả về sai empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
2 sẽ trả về sai empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
3 sẽ trả về sai empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
2 would return false empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
3 would return falseĐã trả lời ngày 23 tháng 11 năm 2011 lúc 1:49Nov 23, 2011 at 1:49
Janchajanchajancha
4.9231 Huy hiệu vàng23 Huy hiệu bạc38 Huy hiệu đồng1 gold badge23 silver badges38 bronze badges
1
Không, nó không phải là một lỗi. Hãy xem các so sánh lỏng lẻo với == Bảng [Bảng thứ hai], cho thấy kết quả của việc so sánh từng giá trị trong cột đầu tiên với các giá trị trong các cột khác:
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array[] "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
Ở đó, bạn có thể thấy rằng một chuỗi trống
empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
4 so với empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
5, empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
6, NULL
hoặc empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
4 sẽ mang lại sự thật.Thay vào đó, bạn có thể muốn sử dụng
empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
9 [Docs] hoặc so sánh nghiêm ngặt [Bảng thứ ba].Đã trả lời ngày 23 tháng 11 năm 2011 lúc 1:48Nov 23, 2011 at 1:48
Felix Klingfelix KlingFelix Kling
770K172 Huy hiệu vàng1069 Huy hiệu bạc1115 Huy hiệu đồng172 gold badges1069 silver badges1115 bronze badges
3
Đây không phải là một lỗi mà là hành vi bình thường PHP. Nó xảy ra vì toán tử
if[$variable === NULL] {...}
0 trong PHP không kiểm tra loại.is not a bug but PHP normal behavior. It happens because the if[$variable === NULL] {...}
0 operator in PHP doesn't check for type. '' == null == 0 == false
Nếu bạn cũng muốn kiểm tra xem các giá trị có cùng loại hay không, hãy sử dụng ===
thay thế. Để nghiên cứu sâu sắc sự khác biệt này, xin vui lòng đọc tài liệu chính thức.
Mel
5.56810 Huy hiệu vàng39 Huy hiệu bạc42 Huy hiệu đồng10 gold badges39 silver badges42 bronze badges
Đã trả lời ngày 23 tháng 11 năm 2011 lúc 1:48Nov 23, 2011 at 1:48
Felix Klingfelix KlingAurelio De Rosa
770K172 Huy hiệu vàng1069 Huy hiệu bạc1115 Huy hiệu đồng8 gold badges47 silver badges71 bronze badges
Đây không phải là một lỗi mà là hành vi bình thường PHP. Nó xảy ra vì toán tử
if[$variable === NULL] {...}
0 trong PHP không kiểm tra loại.Nếu bạn cũng muốn kiểm tra xem các giá trị có cùng loại hay không, hãy sử dụng ===
thay thế. Để nghiên cứu sâu sắc sự khác biệt này, xin vui lòng đọc tài liệu chính thức.
MelJun 17, 2013 at 9:32
5.56810 Huy hiệu vàng39 Huy hiệu bạc42 Huy hiệu đồngdayuloli
Aurelio de Rosaaurelio de Rosa15 gold badges65 silver badges115 bronze badges
1
21.4K8 Huy hiệu vàng47 Huy hiệu bạc71 Huy hiệu đồng
Nếu bạn sử dụng
if[$variable === NULL] {...}
0, PHP sẽ xử lý một chuỗi trống hoặc mảng là if[$variable === NULL] {...}
5. Để phân biệt giữa if[$variable === NULL] {...}
5 và TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array[] "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
5, hoặc sử dụng ===
hoặc empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
9. Vì thế:Nov 28, 2019 at 20:28
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array[] "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
8 hoặc TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array[] "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
9Foued MOUSSIĐã trả lời ngày 17 tháng 6 năm 2013 lúc 9:323 gold badges16 silver badges35 bronze badges
dayulolidayuloli
15.4K15 Huy hiệu vàng65 Huy hiệu bạc115 Huy hiệu đồng
empty[str_replace[" " ,"" , $YOUR_DATA]] ? $YOUR_DATA = '--' : $YOUR_DATA;
Php 7 isset [] vs clan [] vs is_null []Aug 10, 2020 at 9:26
Đã trả lời ngày 28 tháng 11 năm 2019 lúc 20:28Kopi Bryant
Foued moussifoued moussi14 silver badges28 bronze badges
4.4133 Huy hiệu vàng16 Huy hiệu bạc35 Huy hiệu Đồng stands for a variable without value. To check if a variable is NULL you can either use
'' == null == 0 == false
4 or the comparison [===
] with NULL. Both ways, however, generate a warning if the variable is not defined. Similar to '' == null == 0 == false
6 and '' == null == 0 == false
7, which can be used as functions.var_dump[is_null[$var]]; // true
var_dump[$var === null]; // true
var_dump[empty[$var]]; // true
Chỉ cần addon nếu ai đó đang đối phó với
'' == null == 0 == false
0, điều này sẽ hoạt động nếu giao dịch với '' == null == 0 == false
0.Thay thế nó bằng
'' == null == 0 == false
2 trước và kiểm tra nó bằng '' == null == 0 == false
3Dec 5, 2020 at 20:15
Đã trả lời ngày 10 tháng 8 năm 2020 lúc 9:26thomas
Kopi Bryantkopi Bryant7 silver badges6 bronze badges