1. 程式人生 > >php中的isset()和empty()

php中的isset()和empty()

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()