2010-03-17 45 views
10

Tôi cố gắng để hiểu sự khác biệt giữa điều này:Tại sao tôi cần hàm isset() trong php?

if (isset($_POST['Submit'])) { 
    //do something 
} 

if ($_POST['Submit']) { 
    //do something 
} 

Dường như với tôi rằng nếu $ _POST [ 'Gửi'] biến là đúng, sau đó nó được thiết lập. Tại sao tôi cần hàm isset() trong trường hợp này?

Trả lời

15

$a = array("x" => "0"); 

if ($a["x"]) 
    echo "This branch is not executed"; 

if (isset($a["x"])) 
    echo "But this will"; 

(Xem thêm http://hk.php.net/manual/en/function.isset.phphttp://hk.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting)

+0

vì vậy tôi chỉ nên luôn sử dụng hàm đặt trong trường hợp như thế này? – zeckdude

+2

Cố gắng truy cập '$ a [" x "]' cũng sẽ tăng 'E_Notice' khi không có khóa' x' được định nghĩa bên trong '$ a'. Việc kiểm tra bằng 'isset' hoặc' array_key_exists' có thể tránh được điều này. – Gordon

+0

@Chris: Luôn sử dụng 'isset' để kiểm tra * tồn tại * của một biến nhất định. – kennytm

4

isset sẽ trả về TRUE nếu nó tồn tại và không phải là NULL nếu không nó là FALSE.

3

Về cơ bản, bạn muốn kiểm tra xem biến $ _POST [] đã được gửi chưa, bất kể giá trị. Nếu bạn không sử dụng isset(), các lần gửi nhất định như submit=0 sẽ không thành công.

1

Trong ví dụ thứ 2 của bạn, PHP sẽ phát hành thông báo (trên E_NOTICE hoặc nghiêm ngặt hơn) nếu khóa đó không được đặt cho $_POST.

Đồng thời xem this question on Stack Overflow.

+0

Không phải 'E_STRICT'; 'E_NOTICE'. – janmoesen

+0

Ah chúc mừng, cảm ơn. – alex

0

 

if($_POST['Submit']) 
{ 
//some code 
} 
 

sẽ không làm việc trong WAMP (hoạt động trên xampp)
trên wamp bạn sẽ phải sử dụng

 

if (isset($_POST['Submit'])) { 
    //do something 
} 
 

thử nó. :)

+1

Điều này nghe có vẻ giống như thiết lập xử lý lỗi mặc định sau đó là một hệ điều hành. – alex

0

nếu người dùng không nhập giá trị để $ _POST [] trả về NULL mà chúng ta nói trong mô tả của isset:"

isset sẽ trả về TRUE nếu nó tồn tại và không phải là NULL nếu không nó là FALSE. , nhưng ở đây, thiết lập trả lại đúng "

Các vấn đề liên quan