Sự khác nhau giữa bốn câu lệnh PHP này là gì?PHP: Biến trống hoặc không được đặt hoặc cái gì?
if (isset($data)) {
if (!empty($data)) {
if ($data != '') {
if ($data) {
Tất cả đều giống nhau không?
Sự khác nhau giữa bốn câu lệnh PHP này là gì?PHP: Biến trống hoặc không được đặt hoặc cái gì?
if (isset($data)) {
if (!empty($data)) {
if ($data != '') {
if ($data) {
Tất cả đều giống nhau không?
if (isset($data)) {
Biến chỉ được thiết lập - trước khi dòng mà chúng ta tuyên bố biến mới với tên 'dữ liệu', ví dụ: $ data = 'abc';
if (!empty($data)) {
Biến được điền dữ liệu. Nó không thể có mảng trống vì sau đó $data
có loại mảng nhưng vẫn không có dữ liệu, ví dụ: $ data = array (1); Không thể được null, chuỗi rỗng, mảng trống rỗng, đối tượng rỗng, 0 vv
if ($data != '') {
Variable không phải là một chuỗi rỗng. Nhưng cũng không được để trống giá trị (ví dụ trên).
Nếu chúng tôi muốn so sánh các loại, hãy sử dụng !==
hoặc ===
.
if ($data) {
Biến được điền bằng bất kỳ dữ liệu nào. Tương tự như !empty($data)
.
Kiểm tra PHP tay ra: http://www.php.net/manual/en/types.comparisons.php
Expression gettype() empty() is_null() isset() if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null; NULL TRUE TRUE FALSE FALSE var $x; NULL TRUE TRUE FALSE FALSE $x undefined NULL TRUE TRUE FALSE FALSE $x = array(); array TRUE FALSE TRUE FALSE $x = false; boolean TRUE FALSE TRUE FALSE $x = true; boolean FALSE FALSE TRUE TRUE $x = 1; integer FALSE FALSE TRUE TRUE $x = 42; integer FALSE FALSE TRUE TRUE $x = 0; integer TRUE FALSE TRUE FALSE $x = -1; integer FALSE FALSE TRUE TRUE $x = "1"; string FALSE FALSE TRUE TRUE $x = "0"; string TRUE FALSE TRUE FALSE $x = "-1"; string FALSE FALSE TRUE TRUE $x = "php"; string FALSE FALSE TRUE TRUE $x = "true"; string FALSE FALSE TRUE TRUE $x = "false"; string FALSE FALSE TRUE TRUE
Như bạn thấy, if(!empty($x))
bằng if($x)
và if(!is_null($x))
bằng if(isset($x))
. Theo như nếu $data != ''
xuất hiện, nó là TRUE
nếu $data
không phải là NULL
, ''
, FALSE
hoặc 0
(so sánh rộng).
Chúng không giống nhau.
true nếu biến được đặt. biến có thể được đặt thành trống và điều này sẽ đúng.
true nếu biến được đặt và không bằng chuỗi rỗng, 0, '0', NULL, FALSE, mảng trống. nó rõ ràng không giống như isset
.
nếu biến không bằng một chuỗi trống, nếu biến không được đặt là chuỗi rỗng.
nếu biến cố định thành true, nếu biến không được đặt, biến sẽ bị ép thành sai.
if (isset ($ data)) - Xác định nếu một biến được thiết lập (đã không đặt cược 'unset()'
và không phải là NULL
if (empty ($ data)) -.! Là một loại séc thuyết bất khả tri cho trống nếu $ data là '', 0, false hoặc NULL, nó sẽ trả về giá trị true.
if ($ data!= '') {đây là loại chuỗi an toàn khi kiểm tra xem dữ liệu $ không bằng một chuỗi trống
nếu ($ data) {đây là tìm kiếm đúng hoặc sai (aka: 0 hoặc 1)
'if ($ data) {đây là tìm kiếm đúng hay sai (aka: 0 hoặc 1)' <- không hoàn toàn chính xác. Điều này sẽ đúng nếu '$ data' chứa một cái gì đó không giải quyết thành false (về cơ bản là những thứ giống như'! Empty ($ data) ') –
[Hướng dẫn] (http://php.net/manual/en/function.empty.php) đặt như sau: 'empty()' là đối diện của '(boolean) var', ** ngoại trừ không có cảnh báo nào được tạo khi biến không được đặt. ** Xem thêm [câu trả lời này] (http://stackoverflow.com/a/4559976/758990). –