Đầ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 ! :D . Rất vui được làm quen với mọi người !

Nguồn: Bloger WordPress – Anh Khoai

Advertisements