php中的isset()和empty()
阿新 • • 發佈:2017-11-12
methods 不存在 php 手冊 代碼 code ram post strong
isset()和empty()的功能很類似,只能說是很類似,因為他們還是有不同點的,而他們的不同點還是挺明顯的;
官方手冊中對這兩個的解釋分別如下:
bool empty ( mixed$var
) 判斷一個變量是否被認為是空的。當一個變量並不存在,或者它的值等同於FALSE
,那麽它會被認為不存在。如果變量不存在的話,empty()並不會產生警告。
bool isset ( mixed $var
[, mixed $...
] ) 檢測變量是否設置,並且不是 NULL
。
我經常在判斷表單是否提交的時候用到這兩個函數,但是有時候也是會搞混的。
比如我進行各種操作之前,得先判斷一下是否有表單提交? 是否是用指定的方式(GET或者POST)來提交?提交的動作是什麽(刪除、顯示、插入)? 這時我就得用到empty或者isset,說經常搞混,是因為,我最開始是這樣用的,比如下面這段代碼:
<form action="" method="post"> <input type="text" name="test" > <input type="submit" name="submit" value="delete"> <input type="submit" name="submit" value="update"> </form> <?php if(isset($_POST)){ echo "收到請求"; } else{ echo "未收到請求"; } ?>
其實這是錯誤的,因為$_POST是一個全局數組,就算$_POST數組為空,那$_POST也是存在的,無論是否有post請求,改代碼都會輸出“收到請求”。你可能會想到用isset判斷submit的name屬性是否為空,比如下面的代碼:
<form action="" method="post"> <input type="text" name="test" > <input type="submit" name="submit" value="delete"> <input type="submit" name="submit" value="update"> </form> <?php if(isset($_POST[‘submit‘]) && $_POST[‘submit‘]==‘delete‘){ echo "收到刪除請求"; } elseif(isset($_POST[‘submit‘]) && $_POST[‘submit‘]==‘update‘){ echo "收到更新請求"; } else echo "未收到請求"; ?>
還可以用下面這種方法實現:
<meta charset=‘utf-8‘> <form action="" method="post"> <input type="text" name="test" > <input type="submit" name="submit" value="delete"> <input type="submit" name="submit" value="update"> </form> <?php if( ! empty($_POST)){ $action=$_POST[‘submit‘]; switch($action){ case "delete":echo "delete"; break; case "update":echo "update";break; default:echo "非法提交"; } } else { echo "未收到請求"; } ?>
php中的isset()和empty()