Trong PHP, isset()
và empty()
là hai hàm thường được sử dụng để kiểm tra giá trị của biến, nhưng chúng có các mục đích và hành vi khác nhau. Dưới đây là sự khác biệt chính giữa chúng:
1. isset()
- Chức năng: Kiểm tra xem một biến có được định nghĩa và có khác
null
hay không. - Cú pháp:
isset($variable);
- Trả về:
true
: Nếu biến đã được định nghĩa và khácnull
.false
: Nếu biến chưa được định nghĩa hoặc bằngnull
.
- Ví dụ:
$var1 = "Hello"; $var2 = null; echo isset($var1); // Output: 1 (true) echo isset($var2); // Output: (false) echo isset($var3); // Output: (false) (nếu $var3 chưa được định nghĩa)
2. empty()
- Chức năng: Kiểm tra xem một biến có “rỗng” hay không. Một biến được coi là “rỗng” nếu nó không được định nghĩa, có giá trị
null
, chuỗi rỗng, số 0, chuỗi “0”, hoặc mảng rỗng. - Cú pháp:
empty($variable);
- Trả về:
true
: Nếu biến không tồn tại hoặc có giá trị rỗng.false
: Nếu biến có giá trị không rỗng.
- Ví dụ:
$var1 = ""; $var2 = 0; $var3 = null; $var4 = "Hello"; echo empty($var1); // Output: 1 (true) echo empty($var2); // Output: 1 (true) echo empty($var3); // Output: 1 (true) echo empty($var4); // Output: (false)
3. So sánh giữa isset()
và empty()
Tính năng | isset() | empty() |
---|---|---|
Kiểm tra | Biến có được định nghĩa và khác null không | Biến có rỗng hay không |
Trả về | true nếu biến đã định nghĩa và không null | true nếu biến không tồn tại hoặc có giá trị rỗng |
Các giá trị coi là “rỗng” | Không bao gồm giá trị 0 , chuỗi rỗng | Bao gồm giá trị 0 , chuỗi rỗng, null , mảng rỗng |
Sử dụng | Thường dùng để kiểm tra xem biến có tồn tại không | Thường dùng để kiểm tra giá trị hợp lệ của biến |
Tóm lại
- Sử dụng
isset()
khi bạn chỉ muốn kiểm tra xem một biến có tồn tại và không bằngnull
. - Sử dụng
empty()
khi bạn muốn kiểm tra xem một biến có giá trị “rỗng” hay không, bao gồm nhiều trường hợp hơn so vớiisset()
. is_null()
là một hàm đơn giản và hữu ích để kiểm tra xem một biến có phải lànull
hay không.

Dương Trần Hà, hiện mình đang là kỹ công nghệ phần mềm và cũng là giám đốc thành lập công ty DTH Solutions. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn lập trình, nodejs, nestjs, laravel, yii2, reactjs, nextjs. Mình đã phát triển rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số thành công nhỏ, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.