Hàm isset() trong PHP mình cũng đã sử dụng khá nhiều lần trong series này rồi nhưng vẫn có một số bạn mail hỏi sự khác nhau giữa hàm isset() và hàm empty() trong PHP như thế nào?, khi nào thì sử dụng hàm isset() và khi nào thì sử dụng hàm empty()? Nên trong bài này mình sẽ giới thiệu hai hàm này và hướng dẫn cách sử dụng nó, cũng như là sự khác nhau của nó.
1. Hàm isset trong PHP
Hàm isset() được dùng để kiểm tra một biến nào đó đã được khởi tạo trong bộ nhớ của máy tính hay chưa, nếu nó đã khởi tạo (tồn tại) thì sẽ trả về TRUE và ngược lại sẽ trả về FALSE.
$domain có tồn tại hay không
| 1 2 3 4 5 6 | if(isset($domain)){    echo'Biến domain đã tồn tại';}else{    echo'Biến domain chưa tồn tại';} | 
Vậy khi nào thì sử dụng hàm isset()?
Như bạn biết nếu trong quá trình biên dịch nếu trong code có sử dụng một biến không tồn tại thì trình biên dịch sẽ ngưng xử lý và thông báo lỗi ngay, chính vì vậy thông thường những trường hợp mà ta không chắc chắn là biến đó luôn tồn tại thì trước khi sử dụng hãy kiểm tra nó.
Đây là ví dụ thông dụng nhất mà có lẽ nhiều ban newbie vẫn mắc phải. Thông thường khi lấy thông tin từ FORM (xem bài post và get trong php) thì bạn nên kiểm tra nó có tồn tại không rồi hãy lấy, nếu không người dùng sẽ sử dụng firebug đổi một số name của các thẻ input thì chương trình sẽ lỗi ngay.
| 1 2 3 4 5 6 7 | if(isset($_POST['submit'])){    $fullname= isset($_POST['fullname']) ? $_POST['fullname'] : '';    $address= isset($_POST['address']) ? $_POST['address'] : '';    $email= isset($_POST['email']) ? $_POST['email'] : '';    $phone= isset($_POST['phone']) ? $_POST['phone'] : '';} | 
Trong thuật toán phân trang chúng ta lấy page trên URL để xác định record hiển thị cho trang đó. Chính vì page nằm trên URL nên rất nguy hiểm nếu như chúng ta lấy mà không kiểm tra nó tồn tại hay không vì nếu người dùng chỉ cần bỏ cái page=x đó đi thì chương trình sẽ bị lỗi ngay.
| 1 | $current_page= isset($_GET['page']) ? $_GET['page'] : '1'; | 
$domain chưa chắc chắn là tồn tại
| 1 2 3 4 5 6 7 8 9 | // Mệnh đề if này không được thực hiện// => biến $sologan ko tồn tại$website= 'freetuts.net';if($website!= 'freetuts.net'){    $sologan= 'Đây không phải là website freetuts.net';} // Nên đoạn code này sai$sologan.= ' vui lòng ghi rõ nguồn khi public nội dung này ở website khác'; | 
Rõ ràng đoạn code này chạy sẽ bị lỗi ngay bởi vì biến $sologan sẽ không tồn tại vì câu lệnh bên trong mệnh đề if không được chạy.
Trên là những ví dụ thông thường hay xảy ra trong thực tế nên vẫn còn khá nhiều trường hợp bạn nên sử dụng hàm isset() trong php.
2. Hàm empty() trong PHP
Hàm empty() trong php dùng để kiểm tra một biến nào đó có giá trị rỗng hoặc chưa được khởi tạo hay không.
Giả sử ta có biến $var và giá trị của nó sẽ là rỗng nếu nó nằm một trong các trường hợp sau:
- $var = 0hoặc- $var = '0'
- $var = NULL
- $var = '';
- $var = FALSE
- $varkhông tồn tại
Như vậy có 6 trường hợp hàm empty() sẽ đúng. Tuy nhiên trường hợp cuối cùng là $var không tồn tại là hơi đặc biệt một chút, vấn đề này rất giống với hàmisset() đúng không nào.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $var= '0';var_dump(empty($var));$var= 0;var_dump(empty($var));$var= '';var_dump(empty($var));$var= FALSE;var_dump(empty($var));$var= NULL;var_dump(empty($var));var_dump(empty($bien_khong_ton_tai)); | 
Trong đó ở ví dụ thứ 6 biến $bien_khong_ton_tai chưa được khởi tạo nhưng vẫn không bị lỗi và khi sử dụng nó trong hàm empty() thì sẽ trả về TRUE.
Vậy khi nào nên sử dụng hàm empty()?
Thông thường chúng ta sử dụng hàm empty() để validate dữ liệu bởi vì nó có thêm chức năng của hàm isset() nên sẽ không bao giờ xuất hiện lỗi.
| 1 2 3 | if(empty($_POST['username'])){    echo'Bạn chưa nhập tên đăng nhập';} | 
Nếu sử dụng hàm isset() thì ta sẽ làm như sau:
| 1 2 3 4 5 6 7 8 9 | $username= isset($_POST['username']) ? $_POST['username'] : '';$password= isset($_POST['password']) ? $_POST['password'] : '';if($username== '') {    echo'Bạn chưa nhập tên đăng nhập';}if($password== '') {    echo'Bạn chưa nhập mật khẩu';} | 
Rõ ràng nếu ta dùng hàm empty() thì nhìn code gọn hơn phải không nào.
3. Lời kết
Trong bài này mình đã giới thiệu hai hàm thường dùng để validate dữ liệu đó là hàm isset() và hàm empty() trong php, mỗi hàm mình có liệt kê cách sử dụng nên từ đó bạn có thể suy ra khi nào nên sử dụng isset() và khi nào nên sử dụng empty().
Và có một điểm mình muốn nhấn mạnh khi sử dụng hàm empty() đó là hàm này sẽ trả về TRUE nếu biến kiểm tra không tồn tại, điều này rất giống với hàm isset() nên ta có thể nói hàm empty() có luôn chức năng của hàm isset().
Theo: freetuts.net
 
                                       


 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
															
							 
                             
             
            
 Vietnamese
 Vietnamese Afrikaans
 Afrikaans Albanian
 Albanian Amharic
 Amharic Arabic
 Arabic Armenian
 Armenian Azerbaijani
 Azerbaijani Basque
 Basque Belarusian
 Belarusian Bengali
 Bengali Bosnian
 Bosnian Bulgarian
 Bulgarian Catalan
 Catalan Cebuano
 Cebuano Chichewa
 Chichewa Chinese (Simplified)
 Chinese (Simplified) Chinese (Traditional)
 Chinese (Traditional) Corsican
 Corsican Croatian
 Croatian Czech
 Czech Danish
 Danish Dutch
 Dutch English
 English Esperanto
 Esperanto Estonian
 Estonian Filipino
 Filipino Finnish
 Finnish French
 French Frisian
 Frisian Galician
 Galician Haitian Creole
 Haitian Creole Georgian
 Georgian German
 German Greek
 Greek Gujarati
 Gujarati Hausa
 Hausa Hawaiian
 Hawaiian Hebrew
 Hebrew Hindi
 Hindi Hmong
 Hmong Hungarian
 Hungarian Icelandic
 Icelandic Igbo
 Igbo Indonesian
 Indonesian Irish
 Irish Italian
 Italian Japanese
 Japanese Javanese
 Javanese Kannada
 Kannada Kazakh
 Kazakh Khmer
 Khmer Korean
 Korean Kurdish (Kurmanji)
 Kurdish (Kurmanji) Kyrgyz
 Kyrgyz Lao
 Lao Latin
 Latin Latvian
 Latvian Lithuanian
 Lithuanian Luxembourgish
 Luxembourgish Macedonian
 Macedonian Malagasy
 Malagasy Malay
 Malay Malayalam
 Malayalam Maltese
 Maltese Maori
 Maori Marathi
 Marathi Mongolian
 Mongolian Myanmar (Burmese)
 Myanmar (Burmese) Nepali
 Nepali Norwegian
 Norwegian Pashto
 Pashto Persian
 Persian Polish
 Polish Portuguese
 Portuguese Punjabi
 Punjabi Romanian
 Romanian Russian
 Russian Samoan
 Samoan Scottish Gaelic
 Scottish Gaelic Sinhala
 Sinhala Serbian
 Serbian Sesotho
 Sesotho Shona
 Shona Sindhi
 Sindhi Slovenian
 Slovenian Slovak
 Slovak Somali
 Somali Spanish
 Spanish Sundanese
 Sundanese Swahili
 Swahili Swedish
 Swedish Tajik
 Tajik Tamil
 Tamil Telugu
 Telugu Thai
 Thai Turkish
 Turkish Ukrainian
 Ukrainian Urdu
 Urdu Uzbek
 Uzbek Welsh
 Welsh Xhosa
 Xhosa Yiddish
 Yiddish Yoruba
 Yoruba Zulu
 Zulu