Đầu tiên để phân biệt được hai hàm này – chúng ta hãy xem lại định nghĩa của hai hàm đó :
– Isset() là hàm dùng để kiểm tra xem một biến đã có giá trị hay chưa ? . Nếu có thì sẽ trả về giá trị là TRUE và ngược lại sẽ trả về giá trị là FALSE.
– Empty() là hàm dùng để kiểm tra xem một biến có giá trị “rỗng” hay không ? . Nếu có thì sẽ trả về giá trị là TRUE và ngược lại sẽ trả về giá trị là FALSE.
Vậy điểm khác nhau giữa hai hàm đó là gì ? vì sao mà đa số người học lập trình php vẫn gặp khó khăn trong việc phân biệt chúng !!!
Câu trả lời là dưới đây :
==> Đó là vì chúng ta không phân biệt được sự khác nhau giữa hai từ : ” có giá trị ” và ” giá trị rỗng ”
Hai cụm từ đó thực sự rất dễ gây nhầm lẫn với đa số người học – hãy cùng làm rõ vấn đề đó bây giờ .
-+ Đầu tiên : ” có giá trị ” trong ngôn ngữ lập trình là gì ?
Khi chúng ta khai báo một biến
ví dụ :
$a;
==> điều này có nghĩa là chúng ta đã ra một yêu cầu ở bộ nhớ stack rằng: ” Tôi cần một vị trí để lưu trữ cái biến tên ” a ” trong bộ nhớ ! hãy cung cấp cho tôi NGAY LÚC NÀY ” . Vậy là trong bộ nhớ Stack sau khi nhận được yêu cầu đó sẽ cung cấp một khu nhớ cho biến a . Nhưng đây mới chỉ là cung cấp một nơi ” ẩn nấu ” cho cái biến tên ” a” này chứ thực ra nó chưa hề ” chứa một giá trị ” nào cả ! Lý do là vì trong bộ nhớ heap cái biến a này chưa trỏ đến một giá trị nào cả ! ==> Biến a của chúng ta bây giờ được gọi là ” chưa có giá trị ” hay cách gọi khác là NULL .
và khi tôi viết
$a = 5 ==> điều này có nghĩa là biến a ( đang được lưu trữ ở bộ nhớ stack ) lúc này đang trỏ đến một ô nhớ chứa giá trị là 5 trên bộ nhớ heap . Lúc này ta nói rằng ” Biến a có giá trị là 5 ”
+ Thứ hai : ” giá trị rỗng ” trong ngôn ngữ lập trình là gì ?
Nếu các bạn đã hiểu rõ ở phần trên về ” có giá trị ” là gì ? thì chắc chắn ở phần này bạn sẽ hình dung ra một cách nhanh chống hơn ” giá trị rỗng ” ở đây là gì ? ? .
” Giá trị rỗng ” có nghĩa là đã có giá trị NHƯNG giá trị đó là RỖNG !!! < có vẽ hơi khó hiểu >
ví dụ :
$a = “” ;
==> điều này có nghĩa là khi bạn đã yêu cầu cấp một bộ nhờ lưu trữ biến a trên bộ nhớ stack ( như đã nói ở trên ) thì lúc này biến a đang trỏ đến một ô nhớ ở bộ nhớ HEAP nhưng ở ô nhớ này hiện tại đang ko lưu trữ bất kỳ một giá trị nào cả !!! ==> ĐÂY gọi là giá trị RỖNG.
Từ hai hướng suy nghĩa trên chúng ta dễ dàng phân biệt được cách sử dụng của hai hàm isset () và empty() :
– Khi sử dụng hàm isset() để kiểm tra một biến có giá trị hay ko ? thực chất là chúng ta đang kiểm tra xem biến đó có trỏ đến ô nhớ nào đó ở bộ nhớ HEAP hay ko ? hay biến đó có đang NULL hay ko ?
– Khi sử dụng hàm empty() để kiểm tra một biến có rỗng hay ko ? thực chất là chúng ta đang kiểm tra xem biến đó khi trỏ đến ô nhớ trên bộ nhớ HEAP thì ô nhớ đó có giá trị hay không ?
Đó cách hiểu và suy nghĩ của mình về vấn đề trên ! Các bạn nếu có ý kiến đóng góp gì thì xin hãy để lại bình luận bên dưới ! ? . Rất vui được làm quen với mọi người !
Hoanglvq